利用T4 模板分离 ado.net entity framework 中Entity(实体层)和 ObjectContext(数据访问层)
2012-08-21 16:55
399 查看
最近做项目的时候,在数据访问层中 使用Ado.Net Entity Framework来创建当前的数据库对应的实体类和数据访问代码。如下图:
但是发现实体类和数据访问都在同一个DX.Data类中,如果其他的类,例如DX.BLL需要使用实体类的时候,必须引用DX.Data,这样就会造成访问数据的代码页给暴露出来了,为了避免这种情况,需要将实体类和数据访问分离出来,将实体类转移到DX.Model 层中(即实体层)。下面我们就将介绍一下如何利用T4模板来解决此问题.
1.双击 DX.CIC.edmx,然后 右键单击"Add Code Generation Item..",如下图:
2.在弹出的对话框中 选择 "ADO.NET Self-Tracking Entity Generator",然后在 Name文本框中 输入名称 如:DX.CIC.tt.创建成功后将会产生 2个TT文件和一个 App.config.其中App.config是配置数据库信息 。2个 TT文件,DX.CIC.tt 表示数据访问代码类,DX.CIC.Context.tt表示数据库对应的实体类 。
3.在DX.Data中剪贴DX.CIC.tt,然后将其复制到DX.Model层中,此时编译整个解决方案,将编译不通过。需要对这2个文件重新配置一下。
4.在DX.Model层中引用System.Rutime.Serialization ,双击DX.CIC.tt,然后在文件中找到string inputFile = @"DX.CIC.edmx";将其修改为string inputFile = @"../DX.Data/DX.CIC.edmx";
5.在DX.Data层中,引用DX.Model层,双击DX.CIC.Context.tt 在using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Common;
using System.Data.EntityClient;
using System.Data.Metadata.Edm;
using System.Data.Objects.DataClasses;
using System.Data.Objects;
using System.Data;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
下面using System.Linq 添加 using DX.Model; 保存.然后编译解决方案。编译成功。
这样就把数据访问层和 实体层分离开来。整体结构如下:
但是发现实体类和数据访问都在同一个DX.Data类中,如果其他的类,例如DX.BLL需要使用实体类的时候,必须引用DX.Data,这样就会造成访问数据的代码页给暴露出来了,为了避免这种情况,需要将实体类和数据访问分离出来,将实体类转移到DX.Model 层中(即实体层)。下面我们就将介绍一下如何利用T4模板来解决此问题.
1.双击 DX.CIC.edmx,然后 右键单击"Add Code Generation Item..",如下图:
2.在弹出的对话框中 选择 "ADO.NET Self-Tracking Entity Generator",然后在 Name文本框中 输入名称 如:DX.CIC.tt.创建成功后将会产生 2个TT文件和一个 App.config.其中App.config是配置数据库信息 。2个 TT文件,DX.CIC.tt 表示数据访问代码类,DX.CIC.Context.tt表示数据库对应的实体类 。
3.在DX.Data中剪贴DX.CIC.tt,然后将其复制到DX.Model层中,此时编译整个解决方案,将编译不通过。需要对这2个文件重新配置一下。
4.在DX.Model层中引用System.Rutime.Serialization ,双击DX.CIC.tt,然后在文件中找到string inputFile = @"DX.CIC.edmx";将其修改为string inputFile = @"../DX.Data/DX.CIC.edmx";
5.在DX.Data层中,引用DX.Model层,双击DX.CIC.Context.tt 在using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Common;
using System.Data.EntityClient;
using System.Data.Metadata.Edm;
using System.Data.Objects.DataClasses;
using System.Data.Objects;
using System.Data;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
下面using System.Linq 添加 using DX.Model; 保存.然后编译解决方案。编译成功。
这样就把数据访问层和 实体层分离开来。整体结构如下:
相关文章推荐
- .NET基础篇——利用泛型与反射更新实体(ADO.NET Entity Framework)
- Object Context of ADO.Net Entity Framework
- ADO.NET Entity Framework(3)ObjectContext
- 利用泛型与反射更新实体(ADO.NET Entity Framework)
- ADO.NET Entity Framework(3)ObjectContext
- C#综合揭秘——利用泛型与反射更新实体(ADO.NET Entity Framework)
- C#综合揭秘——利用泛型与反射更新实体(ADO.NET Entity Framework)
- .NET基础篇——利用泛型与反射更新实体(ADO.NET Entity Framework)(转)
- ADO.NET Entity Framework之ObjectContext
- VS 没有 ADO.NET Entity Framework模板
- ADO.NET Entity Framework 实体框架映射方案
- ADO.NET Entity Framework 如何:通过每个层次结构一个表继承以定义模型(实体框架)
- Ado.net Entity Framework实体转换成JSON
- ADO.NET Entity Framework创建 School 示例数据库(实体框架快速入门)
- ADO.NET Entity Framework 使用实体数据模型工具
- ADO.NET Entity Framework 如何:通过每种类型多个实体集定义模型(实体框架)
- ADO.NET Entity Framework之ObjectQuery对象
- ADO.NET Entity Framework创建 Course Manager 应用程序(实体框架快速入门)
- [转载]使用ADO.NET EntityFramework实体模型类
- ADO.NET Entity Framework 如何:定义单个实体映射到两个表的模型