Asp.net webform scaffolding結合Generic Unit of Work & (Extensible) Repositories Framework代碼生成向導
在上次發布的使用簡單Repositories模式生成的代碼結構有點繁瑣太過復雜,而且整個項目層次結構很不清晰,在開發過程中還是出現大量的邏輯代碼寫在了Apsx.cs中,感覺有點不倫不類。而最近在codeplex上看到一篇《Generic Unit of Work & (Extensible) Repositories Framework》項目非常受歡迎。
Generic Unit of Work & (Extensible) Repositories Framework是一個非常輕量級的對EntityFramework的擴展還有運用了Unit Of Work依賴注入等設計模式,使得整個項目的結構非常規范並且邏輯層次非常清晰,View(webform)->業務邏輯(Service)-〉實體(ORM)->Database。
下面看一下實際使用的效果
環境配置
Demo源代碼 http://files.cnblogs.com/neozhu/unitofworkTutorials.zip
CodePlex開源項目 http://genericunitofworkandrepositories.codeplex.com/
Git Asp.net webform scaffolding項目源代碼 https://github.com/neozhu/WebFormsScaffolding/tree/UnitOfWorkRepository 這個分支下
在新建的web項目中除了需要引用Repository.Pattern,Repository.Pattern.Ef6,Service.Pattern還需要使用NuGet 添加以下幾個引用:
CommonServiceLocator 1.3
Unity 3.5
WebActivatorEx
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的源代碼。


如果覺得有用請點贊 :)
