婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 擴展ASP.NET MVC三層框架且使用StructureMap實現依賴注入1-Model層

擴展ASP.NET MVC三層框架且使用StructureMap實現依賴注入1-Model層

熱門標簽:泰州手機外呼系統軟件 怎樣在地圖標注消火栓圖形 內蒙古智能電銷機器人哪家強 杭州智能電話機器人 廈門四川外呼系統 濟源人工智能電話機器人價格 地圖標注位置多的錢 山東防封電銷卡辦理套餐 百度地圖標注點擊事件

本篇文章將向大家介紹如何添加Service和Repository層并且使用StructureMap把Service層注入到Controller,把Repository注入到Service層。Service層主要是我們的業務邏輯層,這一層不和底層的Database打交道,和Database打交道的是Repository數據持久層。本篇文章通過使用StructureMap依賴注入使Controller,Service,Repository三層的耦合度降到最低。

本系統使用NorthWind開源數據,并且使用EntityFramework5.0實現對數據庫的Object映射。

開始正題之前先來看一下成型的框架結構,我們將圍繞這個截圖進行展開。

 

首先我們看TYStudioDemo.Models這個Project里面的內容

這里面有我們的EntityFramwork的edmx文件,Northwind的數據庫表映射的對象集合。這里建立ADO.Net Entity Data Model的時候沒有使用默認生成一堆.tt文件的方式,而是使用了老的形式。實現方法是首先按默認程序建立起data model,建立好data model之后刪除.tt文件。然后打開.edmx文件,右鍵單擊空白處選擇Properties(屬性),會出現下面的截圖,這時候只需要修改一下Code Generation Strategy(中文翻譯不知道是什么,第一個就對了)的值,默認是None,我們修改為Default,然后保存.edmx



你應該已經注意到了,項目里多了一個TYEntities.cs文件,這個我們是我們這個系統中實現Transaction(事務處理)的關鍵。
我們使用static和[ThreadStatic]屬性來保證一個線程拿到的TYEntities(ObjectContext)總是同一個,這就解決了Transaction事務的問題。沒有解釋到的請詳細閱讀下面代碼里面的注釋。

復制代碼 代碼如下:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Web;

 namespace TYStudioDemo.Models
 {
     public partial class TYEntities
     {
         #region Fields

         //定義索引名稱
         const string ContextKey = "TYEntities";

         //標記為ThreadStaticAttribute的靜態字段不在線程之間共享。
         //每個執行線程都有單獨的字段實例,并且獨立地設置及獲取該字段的值。如果在不同的線程中訪問該字段,則該字段將包含不同的值。
         [ThreadStatic]
         private static TYEntities _current;

         #endregion

         #region Properties

         public bool Disposed { get; set; }

         /// summary>
         /// 當系統工作在HttpContext下,將使用延遲家在技術返回一個TYEntities(ObjectContext),如果沒有HttpContext將返回null
         ///
         /// 不論在哪里使用TYEntities,在請求結束后都需要調用TYEntities.Cleanup()方法
         /// 最佳的方式是TYEntities.Cleanup()放到Global.asax.cs文件里面。
         /// void Application_EndRequest(object sender, EventArgs e)
         /// {
         ///     TYStudioDemo.Models.TYEntities.Cleanup();
         /// }
         /// /summary>
         private static TYEntities ForWebRequest
         {
             get
             {
                 var context = HttpContext.Current;

                 //檢查HttpContext是否存在
                 if (context != null)
                 {
                     //試著從context中得到TYEntities
                     var result = context.Items[ContextKey] as TYEntities;

                     if (result == null)
                     {
                         //創建新的datacontext,并且保存到context里面
                         result = new TYEntities();
                         context.Items[ContextKey] = result;
                     }

                     return result;
                 }

                 return null;
             }
         }

         /// summary>
         /// 這是一個用來獲取TYEntities(ObjectContext)的公共屬性
         ///
         /// 如果你通過HttpContext獲取TYEntities,同樣不論在哪里使用TYEntities,在請求結束后都需要調用TYEntities.Cleanup()方法
         ///
         /// 如果沒有通過HttpContext獲取TYEntities,你必須在使用結束之后調用TYEntities.Cleanup()方法,來清理ObjectContext。
         ///
         /// 需要注意的一點是,無論使用哪種方式獲取TYEntities,我們都必須手動的清理和Dispose TYEntities(ObjectContext)。
         /// 所以一定不要在using塊中使用TYEntities(ObjectContext)。
         /// /summary>
         public static TYEntities Current
         {
             get
             {
                 //從HttpContext中獲取datacontext
                 var result = TYEntities.ForWebRequest;

                 if (result != null)
                     return result;

                 //試著獲取當前活動的TYEntities
                 if (_current == null)
                     _current = new TYEntities();

                 return _current;
             }
         }

         /// summary>
         /// 清理結束TYEntities(ObjectContext)
         /// /summary>
         public static void Cleanup()
         {
             if (HttpContext.Current != null)
             {
                 var result = HttpContext.Current.Items[ContextKey] as TYEntities;

                 if (result != null)
                     result.Dispose();

                 HttpContext.Current.Items[ContextKey] = null;
             }
             else if (_current != null)
             {
                 _current.Dispose();
                 _current = null;
             }
         }

 
         protected override void Dispose(bool disposing)
         {
             bool disposed = Disposed;
             Disposed = true;

             if (!disposed)
                 Cleanup();

             base.Dispose(disposing);
         }

         #endregion
     }
 }

您可能感興趣的文章:
  • 詳解asp.net core 依賴注入
  • ASP.NET Core 過濾器中使用依賴注入知識點總結
  • ASP.NET MVC實現依賴注入的完整過程
  • ASP.NET Core依賴注入系列教程之控制反轉(IoC)
  • ASP.NET Core依賴注入系列教程之服務的注冊與提供
  • 詳解ASP.NET Core 中的框架級依賴注入
  • 詳解ASP.NET Core 在 JSON 文件中配置依賴注入
  • 解讀ASP.NET 5 & MVC6系列教程(7):依賴注入
  • 在ASP.Net Web Forms中使用依賴注入的步驟

標簽:喀什 新鄉 洛陽 百色 周口 朔州 臺州 朝陽

巨人網絡通訊聲明:本文標題《擴展ASP.NET MVC三層框架且使用StructureMap實現依賴注入1-Model層》,本文關鍵詞  擴展,ASP.NET,MVC,三層,框架,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《擴展ASP.NET MVC三層框架且使用StructureMap實現依賴注入1-Model層》相關的同類信息!
  • 本頁收集關于擴展ASP.NET MVC三層框架且使用StructureMap實現依賴注入1-Model層的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲欧美在线aaa| 国产精品护士白丝一区av| 精品视频一区 二区 三区| 精品国产露脸精彩对白| 中文字幕人成不卡一区| 91丨九色丨国产丨porny| 久久亚洲二区三区| 久久99精品国产.久久久久久 | 亚洲日本va午夜在线电影| hitomi一区二区三区精品| 精品精品欲导航| 奇米影视一区二区三区小说| 日日欢夜夜爽一区| 欧美色综合久久| 一区二区欧美精品| 在线观看日产精品| 久久精品99国产精品| 欧美麻豆精品久久久久久| 洋洋av久久久久久久一区| 日韩午夜电影在线观看| 毛片一区二区三区| 欧美一级专区免费大片| 国产乱对白刺激视频不卡| 处破女av一区二区| 久久亚洲二区三区| 成人妖精视频yjsp地址| 成人一区二区视频| 国产精品久久久久久福利一牛影视| 一区二区欧美在线观看| 韩国一区二区在线观看| 色综合中文综合网| 国产亚洲女人久久久久毛片| 欧美一级理论片| 国产精品麻豆欧美日韩ww| 一区2区3区在线看| 91网址在线看| 久久综合网色—综合色88| 日韩高清在线不卡| 欧美色欧美亚洲另类二区| 亚洲国产精品av| 九九久久精品视频| 欧美刺激脚交jootjob| 久久久91精品国产一区二区精品 | 亚洲男人的天堂一区二区| 夜夜嗨av一区二区三区| 欧美一区二区三区在线观看视频 | 国产精品456露脸| 日韩欧美国产高清| 2021中文字幕一区亚洲| 国产精品1区2区3区在线观看| 亚洲少妇30p| 日韩欧美自拍偷拍| 91.成人天堂一区| 风间由美中文字幕在线看视频国产欧美| 国产欧美1区2区3区| 555夜色666亚洲国产免| 国产成人在线网站| 天堂精品中文字幕在线| 国产精品欧美一区二区三区| 在线精品国精品国产尤物884a| 麻豆成人av在线| 日韩欧美一级二级三级久久久| 欧美日韩成人在线| 成人午夜激情在线| 亚洲人一二三区| 亚洲青青青在线视频| 日韩欧美久久一区| 精品婷婷伊人一区三区三| 97精品国产露脸对白| 国产一区二区免费在线| 婷婷综合在线观看| 免费av网站大全久久| 蜜芽一区二区三区| 亚洲欧洲精品一区二区三区 | 成人白浆超碰人人人人| 国产成人一级电影| 久久国产精品99久久人人澡| 亚洲成人久久影院| 免播放器亚洲一区| 日韩高清国产一区在线| 亚洲一区二区在线视频| 国产一区二区福利| 波多野洁衣一区| 成人激情av网| 成人深夜在线观看| 色视频一区二区| 日本精品裸体写真集在线观看 | 成人国产精品免费| 亚洲成a天堂v人片| 夜夜揉揉日日人人青青一国产精品| 中文字幕高清不卡| 综合久久久久久久| 亚洲国产日韩在线一区模特| 久久电影网电视剧免费观看| 亚洲男人天堂av网| 日韩欧美国产三级| 欧美大片免费久久精品三p| 成人小视频免费在线观看| 日本高清无吗v一区| 欧美在线观看视频在线| 欧美日韩国产中文| 国产色产综合色产在线视频| 国产精品色呦呦| 久久人人超碰精品| 欧美国产97人人爽人人喊| 国产精品美女久久久久aⅴ| 亚洲国产精品精华液2区45| 欧美大片一区二区三区| 亚洲综合色婷婷| 亚洲午夜一二三区视频| 免费日韩伦理电影| 91老司机福利 在线| 欧美色综合网站| 精品国产一区二区三区不卡 | 精品粉嫩超白一线天av| 亚洲人成网站精品片在线观看| 亚洲一二三四在线| 久久精品久久精品| 欧美v日韩v国产v| 一区二区三区在线视频观看| 日韩激情一二三区| 成人黄色软件下载| 国产欧美视频一区二区| 亚洲永久精品大片| 国产麻豆日韩欧美久久| 欧美精品在线视频| 国产精品久久福利| 蜜臀av在线播放一区二区三区| 91丝袜国产在线播放| 日韩免费电影网站| 久久av资源站| 91免费版pro下载短视频| 91免费视频观看| 国产电影精品久久禁18| 久久综合狠狠综合久久激情| 日韩不卡手机在线v区| 欧美一级国产精品| 免费成人性网站| 欧美一区二区三区男人的天堂| 亚洲韩国一区二区三区| 在线观看成人小视频| 亚洲丝袜自拍清纯另类| 色婷婷狠狠综合| 婷婷久久综合九色国产成人| 在线免费不卡视频| 一个色综合网站| 欧美三级在线视频| 美女视频黄免费的久久 | 亚洲高清在线精品| 91国偷自产一区二区使用方法| 亚洲老妇xxxxxx| 色噜噜狠狠色综合欧洲selulu| 亚洲国产精品欧美一二99| 欧美日韩国产高清一区| 麻豆一区二区三区| 中文字幕久久午夜不卡| 成人av电影在线| 亚洲精品美国一| 欧美高清精品3d| 国产制服丝袜一区| 亚洲色图欧美激情| 7777精品伊人久久久大香线蕉的 | 色综合一个色综合亚洲| xf在线a精品一区二区视频网站| 日本伊人色综合网| 精品国产91亚洲一区二区三区婷婷| 日本不卡一区二区三区 | 久久久高清一区二区三区| 久久精品国产亚洲a| 久久久久亚洲蜜桃| 在线免费不卡电影| 日韩电影一区二区三区四区| 日日摸夜夜添夜夜添精品视频| 中文字幕一区在线| 亚洲成国产人片在线观看| 日韩精品色哟哟| 不卡一区中文字幕| 日韩视频国产视频| 亚洲美女精品一区| yourporn久久国产精品| 亚洲欧美视频在线观看视频| 国产精品免费视频观看| 91丨九色丨蝌蚪富婆spa| 亚洲成人免费av| 自拍视频在线观看一区二区| 99国产精品久久久久久久久久| 久久综合九色综合97_久久久| 国产精品白丝jk黑袜喷水| 午夜亚洲福利老司机| 国产午夜亚洲精品午夜鲁丝片| 在线观看av一区二区| 91色视频在线| av网站一区二区三区| 国产成人午夜精品5599| 蜜臀久久99精品久久久画质超高清 | 欧美午夜精品电影| 99久久婷婷国产精品综合| 九一久久久久久| 黄一区二区三区| 国产成人精品三级麻豆|