博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)Entity Framework - 利用T4 分离 Entity 和 DbContext
阅读量:4353 次
发布时间:2019-06-07

本文共 1121 字,大约阅读时间需要 3 分钟。

原文地址:

 

 

通常情况,我们会在项目中新建一个ClassLibrary的EF.Data层,然后在该层中添加一个ADO.NET Entity Data Model的edmx文件。IDE就会利用ADO.NET Entity Data Model生成基于当前数据库对应的实体类以及实体类对应的数据访问代码。如果你的项目是简单的三层架构(应用层,业务层,数据访问层),你会发现我们再应用层需要用到实体类的话,必须引用EF.Data层,这样一来也就把数据访问的代码暴露给应用层了。这样有悖于我们三层架构的一个初衷。

让我们一起来Step by Step的来用T4 分离Entity 和 DbContext

Step 1 新建Solution

EF.App应用层 - Console Application
EF.Data实体层 - ClassLibrary
EF.DataAccess数据访问层 - ClassLibary
EF.Services业务层 - ClassLibary

Step 2 添加edmx

打开EFModel.edmx文件,右键菜单选择“Add Code generation Item”,在弹出的窗口选择“ADO.NET DbContext Generator”,EF.DataAccess project中将产生2个T4文件:EFModel.tt, EFModel.Context.tt

我想此时你应该有种预感:EFModel.tt是为产生实体而生产的T4 模板文件,而EFModel.Context.tt正是为产生DbContext而生产的T4模板文件。

Step 3 转移实体

将EFModel.edmx和EFModel.tt 复制到EF.Data,然后再EF.DataAccess中删除EFModel.tt,然后设置EFModel.edmx的Code Generation Strategy设为None[确保EFModel.edmx不自动产生代码]

Step 4 正确引用

App 引用 Data 和 Service

Service 引用 Data
DataAccess 引用 Data

这样一来App 跟DataAccess之间就用Service隔离开了了,这也就是我们的目的。

因为T4模板文件我们是可以修改的,所以我们可以对新生成的2个T4文件做一些修改来生产我们想要的代码。例如我们可以修改EFModel.tt文件把生产的实体类加上DataContract,满足在WCF中的应用。

转载于:https://www.cnblogs.com/fcsh820/archive/2012/08/13/2636610.html

你可能感兴趣的文章
jquery之ajax
查看>>
@Component单例与并发(未解决)
查看>>
mysql事物的特性即实现原理
查看>>
Mac Pro的HDMI接口与WI-FI可能存在冲突的解决方法
查看>>
Liunx-history命令
查看>>
js基础知识之_流程控制语句
查看>>
Discuz! X2.5数据库字典【转载】
查看>>
Pro Git(中文版)
查看>>
解决phpmyadmin-1800秒超时链接失效问题
查看>>
OpenGL第十一节:拉伸和过滤
查看>>
nyoj VF
查看>>
【BT+Log】BT抓取log方法以及log级别修改(HCI+Logcat)
查看>>
Cortex-M3开发经验(一):函数指针的应用
查看>>
SSL证书申请,如何快速通过SSL文件验证。
查看>>
Building Tool(Maven/Gradle)
查看>>
大二下周总结(4)
查看>>
linux 系统运行级别一般为 0-6,请分别写出每个级别的含义
查看>>
支撑千万级,大型电商分布式架构解析
查看>>
全景图转局部平面视图原理详解
查看>>
初入PHP,(for循环~水仙花数)
查看>>