您的位置:首页 > 其它

(转)菜鸟级三层框架(EF+MVC)项目实战之 系列二 对数据访问层的抽象上

2012-08-15 11:03 537 查看
原文地址:http://www.cnblogs.com/rdst/archive/2012/08/12/2634159.html

系列概述:全系列会详细介绍抽象工厂三层的搭建,以及EF高级应用和ASP.NETMVC3.0简单应用,应用到的技术有Ef、Lambda、Linq、Interface、T4等。由于网上对涉及到的技术概念介绍很多,因此本项目中不再对基本概念加以叙述。系列二概述:该系列详细介绍了如何抽象出公用方法(CRUD),以及T4模版的应用。
一、创建Cnblogs.Rdst.IDAO程序集1.1先在解决方案中创建一个Interface文件夹,用于存放抽象出的接口

1.2在Interface文件夹中添加名为Cnblogs.Rdst.IDAO的程序集

1.3添加引用系列一中创建的Domain程序集和System.Data.Entity程序集

二、抽象数据访问层的基接口2.1在刚创建的Cnblogs.Rdst.IDAO程序集中创建IBaseDao接口

2.2在IBaseDao中定义常用的CRUD方法
1usingSystem;
2usingSystem.Collections.Generic;
3usingSystem.Linq;
4usingSystem.Text;
5
6namespaceCnblogs.Rdst.IDAO
7{
8publicinterfaceIBaseDao<T>
9whereT:class,
10new()//约束T类型必须可以实例化
11{
12//根据条件获取实体对象集合
13IQueryable<T>LoadEntites(Func<T,bool>whereLambda);
14
15//根据条件获取实体对象集合分页
16IQueryable<T>LoadEntites(Func<T,bool>whereLambda,intpageIndex,intpageSize,outinttotalCount);
17
18//增加
19TAddEntity(Tentity);
20
21//更新
22TUpdateEntity(Tentity);
23
24//删除
25boolDelEntity(Tentity);
26
27//根据条件删除
28boolDelEntityByWhere(Func<T,bool>whereLambda);
29}
30}



此时基接口中的CRUD方法就定义完成。接下来我们需要使用T4模版生成所有的实体类接口并实现IBaseDao接口。

三、生成所有的实体类接口

3.1添加名为IDaoExt的T4文本模版





3.2在模版中贴入以下代码,其中注释的地方需要根据各自的项目进行更改

<#@templatelanguage="C#"debug="false"hostspecific="true"#>
<#@includefile="EF.Utility.CS.ttinclude"#><#@
outputextension=".cs"#>
<#
CodeGenerationToolscode=newCodeGenerationTools(this);
MetadataLoaderloader=newMetadataLoader(this);
CodeRegionregion=newCodeRegion(this,1);
MetadataToolsef=newMetadataTools(this);

stringinputFile=@"..\\Cnblogs.Rdst.Domain\\Model.edmx";//指定edmx实体模型所在的路径

EdmItemCollectionItemCollection=loader.CreateEdmItemCollection(inputFile);
stringnamespaceName=code.VsNamespaceSuggestion();

EntityFrameworkTemplateFileManagerfileManager=EntityFrameworkTemplateFileManager.Create(this);

#>
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingCnblogs.Rdst.Domain;//引用Domain的命名空间

namespaceCnblogs.Rdst.IDAO//实体类接口所在的命名空间
{
<#
foreach(EntityTypeentityinItemCollection.GetItems<EntityType>().OrderBy(e=>e.Name))//便利edmx模型中映射的实体对象
{#>
publicinterfaceI<#=entity.Name#>Dao:IBaseDao<<#=entity.Name#>>//生成实体对象接口
{
}
<#};#>
}


3.3T4模版编辑完成后,Ctrl+s保存,提示是否运行,点击确认。此时就自动帮我们生成了所有的实体类接口,并实现了IBaseDao接口,相应的也具有了CRUD方法定义。









菜鸟级三层框架(EF+MVC)项目实战之系列二对数据访问层的抽象中会介绍实现类中是如何实现基接口中定义的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐