国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

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

2024-07-10 12:45:55
字體:
來源:轉載
供稿:網友

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

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

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

mvc-customized-framework

 

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

mvc-customized-framework

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

edmx-propertoties

你應該已經注意到了,項目里多了一個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的靜態字段不在線程之間共享。
         //每個執行線程都有單獨的字段實例,并且獨立地設置及獲取該字段的值。如果在不同的線程中訪問該字段,則該字段將包含不同的值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 健康| 堆龙德庆县| 内江市| 蛟河市| 龙陵县| 宣城市| 延庆县| 稻城县| 富蕴县| 五峰| 介休市| 沙雅县| 若尔盖县| 金川县| 哈尔滨市| 呼玛县| 仲巴县| 松溪县| 南和县| 安宁市| 扶余县| 大方县| 石棉县| 崇礼县| 巢湖市| 利津县| 奉节县| 加查县| 察隅县| 吴川市| 无棣县| 台湾省| 旬阳县| 新营市| 昌宁县| 乌鲁木齐县| 叙永县| 新疆| 呼伦贝尔市| 岳池县| 大兴区|