说明:以下例子采用的是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. Qemu+gdb跟踪内核源码

    1.编译安装Qemu Qemu源码下载地址:http://wiki.qemu.org/Download linux下可以直接用wget下载: wget http://wiki.qemu.org/dow ...

  2. Git ~ 回到过去 , 进入未来 ~ Git

    概述 我们已经成功的添加了一个 readme.txt文件 , 现在是时候 继续工作了 , 于是 我们开始尝试一下 Git给我们所带来的便利下面修改read.txt 改成如下内容 为了尝试 Git 给我 ...

  3. BZOJ 2982 combination

    lucas定理裸题. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...

  4. ACE - 代码层次及Socket封装

    原文出自http://www.cnblogs.com/binchen-china,禁止转载. ACE源码约10万行,是c++中非常大的一个网络编程代码库,包含了网络编程的边边角角.在实际使用时,并不是 ...

  5. 移动端 meta 标签笔记

    (转自http://www.cssue.com/xhtml-css/html5-css3/mobile-meta.html,版权归原作者所有!) 移动平台对 meta 标签的定义 一.meta 标签分 ...

  6. hdu1166敌兵布阵_线段树单点更新

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

  7. PHP CI分页类带多个参数

    通过修改system中的pagination.php,给每个<a>都增加了class="pagination". view页面 <div class=" ...

  8. ButterKnife View 注入

    /***************************************************************************************** * ButterK ...

  9. java访问webservce,保持会话,服务端保存session验证

    在进行程序开发的过程中,遇到一个问题,怎么保持会话. 因为一帮进行方法调用很少涉及到即时身份验证的. 例如: 1:客户端登录后服务端保存登录用户信息: 2:客户端持有验证通过key再次请求: 3:服务 ...

  10. Sobel边缘检测算法(转载)

    转载请注明出处:  http://blog.csdn.net/tianhai110 索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰 ...