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

系列概述:全系列会详细介绍抽象工厂三层的搭建,以及EF高级应用和 ASP.NET MVC3.0简单应用,应用到的技术有Ef、Lambda、Linq、Interface、T4等。
                 由于网上对涉及到的技术概念介绍很多,因此本项目中不再对基本概念加以叙述。  
 
系列二概述:该系列详细介绍了如何抽象出公用方法(CRUD),以及T4模版的应用。
 
   一、创建Cnblogs.Rdst.IDAO程序集 
  
1.1 先在解决方案中创建一个Interface 文件夹,用于存放抽象出的接口
1
 
1.2 在Interface文件夹中添加名为Cnblogs.Rdst.IDAO的程序集
1.2.1
 
1.3 添加引用系列一中创建的Domain程序集和System.Data.Entity程序集
 
 
1.3           
 
二、抽象数据访问层的基接口
 
2.1 在刚创建的Cnblogs.Rdst.IDAO程序集中创建IBaseDao接口
 
2
2.2 在IBaseDao中定义常用的CRUD方法
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Cnblogs.Rdst.IDAO
 7 {
 8    public interface IBaseDao<T>
 9                  where T:class,
10                  new ()//约束T类型必须可以实例化
11    {
12        //根据条件获取实体对象集合
13        IQueryable<T> LoadEntites(Func<T,bool> whereLambda );
14 
15        //根据条件获取实体对象集合分页
16        IQueryable<T> LoadEntites(Func<T,bool> whereLambda, int pageIndex, int pageSize,out int totalCount);
17 
18        //增加
19        T AddEntity(T entity);
20 
21        //更新
22        T UpdateEntity(T entity);
23 
24        //删除
25        bool DelEntity(T entity);
26 
27        //根据条件删除
28        bool DelEntityByWhere(Func<T, bool> whereLambda);
29    }
30 }

 

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

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

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

             3

 

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

 

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#><#@
 output extension=".cs"#>
<#
CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);

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

EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
string namespaceName = code.VsNamespaceSuggestion();

EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);

#>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cnblogs.Rdst.Domain;//引用Domain的命名空间

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

 

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

        3.3         

       3.4

 

      菜鸟级三层框架(EF+MVC)项目实战之 系列二 对数据访问层的抽象中 会介绍实现类中是如何实现基接口中定义的方法

转载于:https://www.cnblogs.com/rdst/archive/2012/08/12/2634159.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值