说明:以下例子采用的是DB first的模式

在之前的webform开发模式中我们习惯性性的会建立这样的一些类库:Model、DAL、BLL。。。但是在用了EF以后,我们创建的ADO.NET实体数据模型会默认的将实体类和对数据库的操作放在一起,这样会带来一个问题,就是当我们在应用层需要使用实体类的时候对数据库的操作也会直接暴露出来,由于学习ef不久,所以这个问题困扰了我很久,今天在博客园看了大虾的文章才明白原来微软早就预料到这个问题了。http://www.cnblogs.com/fangrobert/archive/2011/08/22/2150048.html

步骤一:

新建项目和各个类库

BLL:业务逻辑层

Model:实体

StatDataAccess:数据访问层

mvc3App:应用层

步骤二:

在StatDataAccess中新建ADO.NET Entity数据访问实体(XXX.edmx),双击打开XXX.edmx,右键“添加代码生成项”,选择”ADO.NET 自动跟踪实体生成器“,会生成两个T4模板文件Model1.tt和Model1.Context.tt

步骤三:将Model1.tt和XXX.edmx拷贝一份到Model类库项目中,右键运行Model1.tt生成实体类后,将Model类库中的XXX.edmx删除(注:如果数据库有更新再从StatDataAccess拷贝一份XXX.edmx过来再运行Model1.tt就是了)

步骤四:修改StatDataAccess项目中的T4文件Model1.Context.tt添加引用using Model;这样在生成数据操作类的时候才能找到实体类。打开XXX.edmx,右键-属性:代码生成策略由默认改为无(不进行此操作的话edmx还是会生成实体类)。

各项目的引用关系:

StatDataAccess项目引用Model

BLL项目引用Model和StatDataAccess

mvc3App引用BLL和Model

 

 

原文地址;http://hi.baidu.com/yyq745201/item/44ca14377d8da2bb124b1457

Entity Framework只entity与DbContext的分离的更多相关文章

  1. Entity Framework Core系列之DbContext(修改)

    上一篇我们介绍了Entity Framework Core系列之DbContext(添加),这一篇我们介绍下修改数据 修改实体的方法取决于context是否正在跟踪需要修改的实体. 下面的示例中实体由 ...

  2. Entity Framework Core系列之DbContext(删除)

    上一篇我们介绍了Entity Framework Core系列之DbContext(修改),这一篇我们介绍下删除数据 修改实体的方法取决于context是否正在跟踪需要删除的实体. 下面的示例中con ...

  3. Entity Framework Core系列之DbContext(添加)

    上一篇我们介绍了Entity Framework Core系列之DbContext,对DbContext有了概念上的了解,这篇将介绍DbContext添加数据 通过DbContext添加实体的主要方法 ...

  4. Entity Framework Core系列之DbContext

    前言: EF Core DbContext表示与数据库的会话,并提供与数据库通信的API,具有以下功能: 数据库连接 数据操作,如查询和持久化 更改追踪 模型构建 数据映射 对象缓存 事务管理 数据库 ...

  5. Newtonsoft.Json高级用法,json序列号,model反序列化,支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity,字符串

    原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口 ...

  6. [Entity Framework] MySQL @ Entity Framework 6

    原文 [Entity Framework] MySQL @ Entity Framework 6 要让MySQL能够用EF6,我花了一点时间,在此记录一下 安装元件 在设定档加入Provider 安装 ...

  7. Entity Framework Code First使用DbContext查询

    DbContext.DbSet及DbQuery是Entity Framework Code First引入的3个新的类,其中DbContext用于保持数据库会话连接,实体变化跟踪及保存,DbSet用于 ...

  8. 【Entity Framework】 Entity Framework资料汇总

    Fluent API : http://social.msdn.microsoft.com/Search/zh-CN?query=Fluent%20API&Refinement=95& ...

  9. Entity Framework 教程——Entity Framework中的实体类型

    Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...

随机推荐

  1. 让多个Fragment 切换时不重新实例化、FragmentTabHost切换Fragment时避免UI重新加载

    http://www.tuicool.com/articles/FJ7VBb FragmentTabHost切换Fragment时避免UI重新加载 不过,初次实现时发现有个缺陷,每次FragmentT ...

  2. 为自己的系统定制openstack ceilometer

    一.目的 最近研究了一下ceilometer,目的做一个监控系统,对系统中发生的事件进行处理.ceilometer对openstack各个组件信息的收集方式主要由 推 和  拉 两种. “推”: 就是 ...

  3. How to Write Doc Comments for the Javadoc Tool

    http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html This document describe ...

  4. Windows下adb push 总是提示Failed to copy "XX.apk" to 'system/app':Read-only file system

    一般情况看到这种提示我们会想到需要root权限,然后敲上adb remount,但是当我们执行过adb remount后,提示成功,但执行push命令依旧无法完成push. 那么此时我们的做法应该是重 ...

  5. Js的 "继承"

    Js 和 Java , C等语言不是很一样 . 其他语言有 类和实例 但是Js就比较特殊 , 所以 类和实例 只能说是大多数面向对象编程的语言的基本概念 . Js比较特殊 , 它不去分类和实例的概念 ...

  6. 20145210姚思羽《Java程序设计》实验一实验报告

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1. ...

  7. Windows 7下安装部署NodeJs

    第一步  安装NodeJs http://nodejs.org/download/ 下载windows版本的msi文件,双击进行安装即可.安装完毕,默认安装路径为C:\Program Files\no ...

  8. CODEVS1073 家族 (并查集)

    一道裸的并查集,练练手不错. program CODEVS1073; var i,j,m,n,q,x,y,k1,k2,z:longint; f:..] of longint; function fin ...

  9. 浅谈__declspec(dllexport)和__declspec(dllimport)

    __declspec(dllimport)和__declspec(dllexport)经常是成对的,在动态链接库中__declspec(dllexport)导出dll中的成员,__declspec(d ...

  10. sql(join on 和where的执行顺序)

    left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录. inner join: 内连接,又 ...