今天,咱们谈一下如何用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哈哈~