亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:16:47
字體:
來源:轉載
供稿:網友

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

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

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

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

 

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

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



你應該已經注意到了,項目里多了一個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
     }
 }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜欧美大片免费观看| 亚洲国产精品成人精品| 国产亚洲精品美女久久久久| 91天堂在线视频| 中国日韩欧美久久久久久久久| www.久久久久久.com| 国产美女主播一区| 亚洲一级片在线看| 97人人爽人人喊人人模波多| 日韩在线中文字幕| 亚洲自拍偷拍第一页| 亚洲国产私拍精品国模在线观看| 久久久精品电影| 欧美日韩在线另类| 97人洗澡人人免费公开视频碰碰碰| 欧美性猛交xxxx富婆弯腰| 亚洲精品免费av| 国产精品爱啪在线线免费观看| 久久久久久久久久久91| 日韩成人中文字幕| 国产精品三级美女白浆呻吟| 中文字幕av一区二区三区谷原希美| 中文字幕亚洲欧美| 国产自摸综合网| 久久精品亚洲94久久精品| 亚洲免费成人av电影| www国产亚洲精品久久网站| 亚洲精品黄网在线观看| 久久久精品久久| 国产精品国内视频| 亚洲美女在线看| 色播久久人人爽人人爽人人片视av| 主播福利视频一区| 日本午夜精品理论片a级appf发布| 亚洲精品www久久久| 亚洲一区国产精品| 久久精品视频在线观看| 另类美女黄大片| 自拍偷拍免费精品| 亚洲福利在线观看| 国产精品视频26uuu| 欧美久久精品午夜青青大伊人| 欧美xxxx14xxxxx性爽| 亚洲欧洲偷拍精品| 色久欧美在线视频观看| 国产精品白丝jk喷水视频一区| 亚洲va欧美va国产综合久久| 亚洲理论在线a中文字幕| 亚洲精品日韩欧美| 一区二区三区四区精品| 国产精品成av人在线视午夜片| 亚洲一区二区免费在线| 国产欧美一区二区三区在线| 黄色精品一区二区| 在线观看精品自拍私拍| 国a精品视频大全| 国内成人精品一区| 日本精品久久久久影院| 国产综合在线观看视频| 欧美专区第一页| 亚洲激情在线观看视频免费| 国产97在线观看| 91在线视频九色| 亚洲系列中文字幕| 这里只有精品视频| 一本一本久久a久久精品牛牛影视| 久久精品影视伊人网| 91中文字幕一区| 亚洲黄色www网站| 亚洲激情视频在线| 欧美激情视频在线观看| 奇米4444一区二区三区| 日本精品久久久久久久| 国模精品视频一区二区三区| 91精品国产综合久久久久久蜜臀| 51午夜精品视频| 欧美日韩中文字幕在线视频| 欧美中文字幕在线视频| 欧美野外wwwxxx| 亚洲xxxx妇黄裸体| 大桥未久av一区二区三区| 欧美激情小视频| 这里只有精品视频在线| 国产亚洲精品久久| 隔壁老王国产在线精品| 亚洲aⅴ日韩av电影在线观看| 92福利视频午夜1000合集在线观看| 色哟哟入口国产精品| 青青久久av北条麻妃海外网| 亚洲国产欧美一区二区三区同亚洲| 韩日精品中文字幕| 在线观看亚洲区| 国产精品96久久久久久| 色播久久人人爽人人爽人人片视av| 亚洲成人a**站| 亚洲日本中文字幕免费在线不卡| 欧洲成人性视频| 精品高清一区二区三区| 精品国产一区二区三区久久| 国产成人一区二区三区| 成人国产精品一区| 亚洲一区二区三区久久| 97色在线视频观看| 亚洲精品丝袜日韩| 久久精品国产亚洲精品2020| 国产精品无av码在线观看| 久久久噜噜噜久噜久久| 亚洲成人激情在线| 91精品综合视频| 欧美另类老女人| 57pao成人国产永久免费| 国产精品国产福利国产秒拍| 国产精品一二三在线| 国产精品成人观看视频国产奇米| 日本不卡免费高清视频| 欧美视频在线免费| 久久影视电视剧免费网站| 欧美激情一区二区三区在线视频观看| 日韩成人在线视频网站| 国产精品视频免费在线| 77777少妇光屁股久久一区| 国产日韩精品一区二区| 亚洲欧美另类中文字幕| 成人精品视频久久久久| 国产精品美女久久久久久免费| 精品美女久久久久久免费| 日韩中文有码在线视频| 夜夜嗨av色一区二区不卡| 国产精品国产三级国产aⅴ9色| 欧美日韩国产在线播放| 久久久国产视频91| 尤物yw午夜国产精品视频| 91精品视频大全| 国产精品人成电影| 午夜精品福利在线观看| 中文字幕亚洲无线码在线一区| 秋霞av国产精品一区| 日韩中文综合网| 日韩电影免费在线观看| 伊人久久综合97精品| 丁香五六月婷婷久久激情| 国产一区二区三区日韩欧美| 亚洲美女av在线播放| 国产精品美女网站| 亚洲最大在线视频| 亚洲免费一在线| 亚洲精品一区二区网址| 亚洲欧美自拍一区| 福利微拍一区二区| 久久久精品一区二区| 欧美在线激情视频| 日韩国产在线看| 欧美一区在线直播| 国产精品久久久久一区二区| 精品欧美激情精品一区| 亚洲在线免费看| 成人精品久久一区二区三区| 欧美午夜精品久久久久久人妖| 欧美亚洲视频在线看网址| 黄色成人在线免费| 欧美日韩综合视频网址| 国产经典一区二区| 亚洲精品xxx| 日韩av毛片网|