數據訪問層僅僅負責管理數據庫與業務邏輯層之間的通訊,不負責業務邏輯。
技術上我們采用Entity Framework ,它是微軟開發的基於ADO.NET的ORM(Object/Relational Mapping)框架。
Entity Framework的主要特點:
1. 支持多種數據庫(Microsoft SQL Server, Oracle, and MySQL);
2. 能很好地支持表,視圖和存儲過程;
3. 提供Visual Studio集成工具,進行可視化操作;
創建ADO.NET 實體數據模型項目
在項目上點擊右鍵,添加->新建項
選擇"ADO.NET 實體數據模型"
從數據庫生成,新建連接,選擇數據源
填寫連接需要的數據庫信息后,點擊下一步
注意:只選擇"在模型中加入外鍵列"
可以看到新生成了兩個文件"App.Config"和"Model1.edmx":
"App.Config"里面是數據庫連接字符串
"Model1.edmx" 里面是數據實體類和訪問數據庫的上下文
注意:Model1.edmx文件是Entity Framework自動生成的,不做修改,因為每次更新會覆蓋。
修改ADO.NET 實體數據模型項目
每次修改實體模型的時候,都全選(ctrl+A)並刪掉所有實體,然后在Model1.edmx文件空白處上點擊右鍵,選"從數據庫更新模型"
選擇需要的表和視圖,點擊完成即可。
分析總結
我們將系統需要的基礎類放在"Framework"文件夾中,所有的實體數據都需要繼承IBaseEntity接口,所有的數據庫表操作都需要繼承BaseRepository抽象類,所有視圖操作都需要繼承BaseViewRepository抽象類
下面我們以SysException單表的增刪改為例,進行介紹:
這里使用了分部類(partial class)對實體數據SysException進行擴展,加入自定義的屬性,使用SysExceptionMetadata類對SysException進行數據驗證,以保障數據的完整性和正確性。
數據訪問層中的SysExceptionRepository執行數據庫中的增刪改查操作。
以上我們完成了數據訪問層的設計,此架構的代碼實現,請參考www.langben.com