今天,咱們談一下如何用Entity Framework構建一個三層架構。即包括DAL層,BLL層和MODEL層。咱們先看一下目錄結構,以下圖:html
目錄中,咱們有Web層,AVON.DMS.Model是實體層,AVON.DMS.DAL是數據訪問層,AVON.DMS.BLL是業務邏輯層.數據庫
下面,咱們來看看怎麼把三層分出來。架構
首先,咱們先新建項目文件,並建立Web層。以下圖:oracle
新建AVON.DMS.Model 類庫,AVON.DMS.DAL 類庫,AVON.DMS.BLL 類庫:框架
此類庫主要引入數據庫表。由於我用的是Oracle數據庫,因此,你還得安裝.NET訪問Oracle的ODAC組件。ide
下載地址:http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html工具
安裝完成以後,咱們來在AVON.DMS.Model新增一個ADO.NET 實體數據模型,以下圖:測試
點擊 Add, 下一步:spa
下一步:code
選擇數據庫並輸入帳號和密碼:
測試鏈接:
下一步:
下一步:
點擊 "Finish"以後,會自動生成Entity Framework框架的文件,以下圖,咱們看一下目錄結構:
如圖:箭頭1是數據庫層訪問代碼,箭頭2是自動生成的實體類。
下一步,咱們要把箭頭1的代碼層移到AVON.DMS.DAL層,以下圖:
可是,保存以後,DMSModel.Context.cs裏面並無生成代碼。先別急,咱們修改一下DMSModel.Context.tt文件中DMSModel.edmx的路徑,以下:
再引用EntityFramework.dll,AVON.DMS.Model和System.Data.Entity。編譯成功以後,基本完成了Model層和DAL層的分離。
另外,須要把AVON.DMS.Model層中App.config的鏈接字符串拷貝到Web層。
<add name="Entities" connectionString="metadata=res:***********" providerName="System.Data.EntityClient" />
下面,咱們來編寫基本的CRUD(增刪查改)代碼:(備註:因爲做者使用的Oracle數據庫表沒有設置主鍵,因此要對DMSModel.edmx文件進行修改,能夠查看另外一篇文章Oracle + Entity Framework 更新沒有設置主鍵的表)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AVON.DMS.Model; namespace AVON.DMS.DAL { public class RepDAL { Entities DMSDAL = new Entities(); /// <summary> /// 添加會員 /// </summary> /// <param name="rep">會員實體</param> /// <returns></returns> public bool AddtoRep(REP rep) { try { DMSDAL.REP.Add(rep); DMSDAL.SaveChanges(); } catch (Exception) { return false; } return true; } /// <summary> /// 根據會員編號刪除會員 /// </summary> /// <param name="repNo">會員編號</param> /// <returns></returns> public bool DeleteRep(string repNo) { try { REP delRep = DMSDAL.REP.First<AVON.DMS.Model.REP>(o => o.NO == repNo); DMSDAL.REP.Remove(delRep); DMSDAL.SaveChanges(); } catch (Exception) { return false; } return true; } /// <summary> /// 根據會員編號返回會員實體 /// </summary> /// <param name="repNo">會員編號</param> /// <returns></returns> public REP GetFromRep(string repNo) { try { return DMSDAL.REP.SingleOrDefault<AVON.DMS.Model.REP>(t => t.NO == repNo); } catch (Exception) { return null; } } /// <summary> /// 更新實體 /// </summary> /// <param name="rep">實體</param> /// <returns></returns> public bool UpdateRep(REP rep) { try { REP upRep = DMSDAL.REP.First<AVON.DMS.Model.REP>(o => o.NO == rep.NO); upRep.ADDRESS1 = rep.ADDRESS1; upRep.BIRTHDAY = rep.BIRTHDAY; upRep.DELIVER = rep.DELIVER; upRep.MAIL_NO = rep.MAIL_NO; DMSDAL.SaveChanges(); } catch (Exception) { return false; } return true; } } }
以上是在AVON.DMS.DAL中添加的代碼,能夠做爲數據庫層的代碼。而業務邏輯代碼能夠編寫在AVON.DMS.BLL層。
源代碼能夠在這裏下載:源碼
Entity Framework 是微軟基於ADO.NET的ORM框架,Entity Framework的主要特色:
1. 支持多種數據庫(Microsoft SQL Server, Oracle, and DB2);
2. 強勁的映射引擎,能很好地支持存儲過程;
3. 提供Visual Studio集成工具,進行可視化操做;
4. 可以與ASP.NET, WPF, WCF, WCF Data Services進行很好的集成。
以上是一篇簡單的入門介紹,但願能對您有所幫助,O(∩_∩)O哈哈~