在上次發佈的使用簡單Repositories模式生成的代碼結構有點繁瑣太過複雜,並且整個項目層次結構很不清晰,在開發過程當中仍是出現大量的邏輯代碼寫在了Apsx.cs中,感受有點不三不四。而最近在codeplex上看到一篇《Generic Unit of Work & (Extensible) Repositories Framework》項目很是受歡迎。css
Generic Unit of Work & (Extensible) Repositories Framework是一個很是輕量級的對EntityFramework的擴展還有運用了Unit Of Work依賴注入等設計模式,使得整個項目的結構很是規範而且邏輯層次很是清晰,View(webform)->業務邏輯(Service)-〉實體(ORM)->Database。git
下面看一下實際使用的效果github
Demo源代碼 http://files.cnblogs.com/neozhu/unitofworkTutorials.zipweb
CodePlex開源項目 http://genericunitofworkandrepositories.codeplex.com/設計模式
Git Asp.net webform scaffolding項目源代碼 https://github.com/neozhu/WebFormsScaffolding/tree/UnitOfWorkRepository 這個分支下.net
在新建的web項目中除了須要引用Repository.Pattern,Repository.Pattern.Ef6,Service.Pattern還須要使用NuGet 添加如下幾個引用:設計
CommonServiceLocator 1.33d
Unity 3.5code
WebActivatorExorm
Unity.WebForms
添加Unity.WebForms後系統會自動生成 UnityWebFormsStart.cs
接下來作一個Demo
Code-First Entity
Company -> Department
公司實體類 部門實體類 1對多
新建實體類必須繼承Entity
新建一個DataContext
到這裏基本工做就算完成了,下面是生存代碼了
Add Scaffolding item 選擇Web Forms Pages Using EntityFramework
先生存一個Company實體的增刪改查的4個頁面和一個CompanyRepository,一個CompanyService;Repository類生成的方法是對含有一對多多對一關係的實體會生成一個經過外鍵或主鍵獲取子表的數據
好比Department實體會生成經過ParentId外鍵獲取子部門,經過所在公司獲取部門還有根據主鍵獲取全部子部門的方法。
代碼生成完後,接下來須要作的就是Unity配置依賴注入的入口
打開UnityWebFormsStart.cs
完成配置吧生成CompanyService,CompanyRepository和DepartmentService,DepartmentRepository加入
下面看一下頁面部分的代碼,Default分頁查詢和刪除方法
模板生成的頁面樣式徹底使用boostrap css
新增頁面的樣式
編輯頁面,系統會自動生成已自關聯的子表的增刪改查功能,子表的增刪改經過popup的方式彈出,具體後臺代碼請參考Demo的源代碼。
若是以爲有用請點贊 :)