溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何抽象出CRUD及怎么應(yīng)用T4模版

發(fā)布時(shí)間:2022-03-31 09:56:26 來(lái)源:億速云 閱讀:119 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“如何抽象出CRUD及怎么應(yīng)用T4模版”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“如何抽象出CRUD及怎么應(yīng)用T4模版”文章能幫助大家解決問(wèn)題。

一、創(chuàng)建Cnblogs.Rdst.IDAO程序集

系列概述:全系列會(huì)詳細(xì)介紹抽象工廠(chǎng)三層的搭建,以及EF高級(jí)應(yīng)用和 ASP.NET MVC3.0簡(jiǎn)單應(yīng)用,應(yīng)用到的技術(shù)有Ef、Lambda、Linq、Interface、T4等。

由于網(wǎng)上對(duì)涉及到的技術(shù)概念介紹很多,因此本項(xiàng)目中不再對(duì)基本概念加以敘述。 

1.1 先在解決方案中創(chuàng)建一個(gè)Interface 文件夾,用于存放抽象出的接口

如何抽象出CRUD及怎么應(yīng)用T4模版

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

如何抽象出CRUD及怎么應(yīng)用T4模版

1.3 添加引用系列一中創(chuàng)建的Domain程序集和System.Data.Entity程序集

如何抽象出CRUD及怎么應(yīng)用T4模版           

二、抽象數(shù)據(jù)訪(fǎng)問(wèn)層的基接口

2.1 在剛創(chuàng)建的Cnblogs.Rdst.IDAO程序集中創(chuàng)建IBaseDao接口

如何抽象出CRUD及怎么應(yīng)用T4模版

2.2 在IBaseDao中定義常用的CRUD方法

using System;   using System.Collections.Generic;   using System.Linq;   using System.Text;      namespace Cnblogs.Rdst.IDAO   {      public interface IBaseDao<T>                    where T:class,                    new ()//約束T類(lèi)型必須可以實(shí)例化      {          //根據(jù)條件獲取實(shí)體對(duì)象集合          IQueryable<T> LoadEntites(Func<T,bool> whereLambda );             //根據(jù)條件獲取實(shí)體對(duì)象集合分頁(yè)          IQueryable<T> LoadEntites(Func<T,bool> whereLambda, int pageIndex, int pageSize,out int totalCount);             //增加          T AddEntity(T entity);             //更新          T UpdateEntity(T entity);             //刪除          bool DelEntity(T entity);             //根據(jù)條件刪除          bool DelEntityByWhere(Func<T, bool> whereLambda);      }   }

此時(shí)基接口中的CRUD方法就定義完成。接下來(lái)我們需要使用T4模版生成所有的實(shí)體類(lèi)接口并實(shí)現(xiàn)IBaseDao接口。

三、生成所有的實(shí)體類(lèi)接口

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

如何抽象出CRUD及怎么應(yīng)用T4模版

3.2 在模版中貼入以下代碼,其中注釋的地方需要根據(jù)各自的項(xiàng)目進(jìn)行更改

<#@ 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實(shí)體模型所在的路徑   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 //實(shí)體類(lèi)接口所在的命名空間  {  <#  foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)) //便利edmx模型中映射的實(shí)體對(duì)象  {#>          public interface I<#=entity.Name#>Dao:IBaseDao<<#=entity.Name#>> //生成實(shí)體對(duì)象接口      {      }  <#};#>  }

3.3 T4模版編輯完成后,Ctrl+s保存,提示是否運(yùn)行,點(diǎn)擊確認(rèn)。此時(shí)就自動(dòng)幫我們生成了所有的實(shí)體類(lèi)接口,并實(shí)現(xiàn)了IBaseDao接口,相應(yīng)的也具有了CRUD方法定義。

如何抽象出CRUD及怎么應(yīng)用T4模版

如何抽象出CRUD及怎么應(yīng)用T4模版

關(guān)于“如何抽象出CRUD及怎么應(yīng)用T4模版”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI