Entity Framework 之三层架构

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

相关文章
相关标签/搜索