亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

MVC使用T4模板生成其他類的具體實現學習筆記2

2024-07-10 13:31:24
字體:
來源:轉載
供稿:網友

在前篇中我們已經將User類中的代碼做了具體的實現,但仍然有多個實體類未實現,以后可能還會增加新的數據表,數據表結構也有可能發生變化,所以我們使用T4模板來完成類的生成,這樣就算數據庫表發生了改變,也會自動根據改變后的實體對類進行重新生成。

下面是數據訪問層的T4模板文件 Dal.tt

<#@ 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);//EF實體文件在項目中的路徑string inputFile = @"..//PMS.Model//PMS.edmx";EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);string namespaceName = code.VsNamespaceSuggestion();EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#><#//這里為命名空間部分,手動更改為相應的命名空間 #>using PMS.IDAL;using PMS.Model;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PMS.DAL{<#// Emit Entity Typesforeach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)){  //fileManager.StartNewFile(entity.Name + "RepositoryExt.cs");  //BeginNamespace(namespaceName, code);  #>      public partial class <#=entity.Name#>Dal :BaseDal<<#=entity.Name#>>,I<#=entity.Name#>Dal  {  }<#}#>  }

我們將EF實體文件路徑、命名空間更改為對應的值時,Ctrl+S保存,即可生成對應的其他類型的數據訪問類

其他層中也大同小異,只需要做對應的更改即可,下面我將提供相應的代碼

IDAL層

IDal.tt

 

<#@ 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 = @"..//PMS.Model//PMS.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 System.Threading.Tasks;using PMS.Model;namespace PMS.IDAL{  <#// Emit Entity Typesforeach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)){  //fileManager.StartNewFile(entity.Name + "RepositoryExt.cs");  //BeginNamespace(namespaceName, code);  #>    public partial interface I<#=entity.Name#>Dal :IBaseDal<<#=entity.Name#>>  {     }<#}#>  }

IDbSession.tt

 

<#@ 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 = @"..//PMS.Model//PMS.edmx";EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);string namespaceName = code.VsNamespaceSuggestion();EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#>using System;using System.Collections.Generic;using System.Data.Entity;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PMS.IDAL{  public partial interface IDbSession  {<#// Emit Entity Typesforeach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)){  //fileManager.StartNewFile(entity.Name + "RepositoryExt.cs");  //BeginNamespace(namespaceName, code);  #>      I<#=entity.Name#>Dal <#=entity.Name#>Dal{get;set;}<#}#>  }  }

DALFactory層

SimpleDalFactory.tt

 

<#@ 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 =@"..//PMS.Model//PMS.edmx";EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);string namespaceName = code.VsNamespaceSuggestion();EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#>using SW.OA.IDAL;using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace SW.OA.DALFactory{  public partial class AbstractFactory  {     <#foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)){  #>        public static I<#=entity.Name#>Dal Create<#=entity.Name#>Dal()    {     string fullClassName = NameSpace + ".<#=entity.Name#>Dal";     return CreateInstance(fullClassName) as I<#=entity.Name#>Dal;    }<#}#>  }  }

DbSession.tt

 

<#@ 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 = @"..//PMS.Model//PMS.edmx";EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);string namespaceName = code.VsNamespaceSuggestion();EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#>using PMS.DAL;using PMS.IDAL;using PMS.Model;using System;using System.Collections.Generic;using System.Data.Entity;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PMS.DALFactory{  public partial class DBSession : IDBSession  {<#// Emit Entity Typesforeach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)){  //fileManager.StartNewFile(entity.Name + "RepositoryExt.cs");  //BeginNamespace(namespaceName, code);  #>      private I<#=entity.Name#>Dal _<#=entity.Name#>Dal;    public I<#=entity.Name#>Dal <#=entity.Name#>Dal    {      get      {        if(_<#=entity.Name#>Dal == null)        {          _<#=entity.Name#>Dal = AbstractFactory.Create<#=entity.Name#>Dal();        }        return _<#=entity.Name#>Dal;      }      set { _<#=entity.Name#>Dal = value; }    }<#}#>  }  }

BLL層

Service.tt

 

<#@ 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 = @"..//PMS.Model//PMS.edmx";EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);string namespaceName = code.VsNamespaceSuggestion();EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#>using PMS.IBLL;using PMS.Model;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PMS.BLL{<#// Emit Entity Typesforeach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)){  //fileManager.StartNewFile(entity.Name + "RepositoryExt.cs");  //BeginNamespace(namespaceName, code);  #>    public partial class <#=entity.Name#>Service :BaseService<<#=entity.Name#>>,I<#=entity.Name#>Service  {       public override void SetCurrentDal()    {      CurrentDal = this.CurrentDbSession.<#=entity.Name#>Dal;    }  }  <#}#>  }

BLL層

IService.tt

<#@ 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 = @"..//PMS.Model//PMS.edmx";EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);string namespaceName = code.VsNamespaceSuggestion();EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#>using PMS.Model;using PMS.Model.Search;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace PMS.IBLL{<#// Emit Entity Typesforeach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name)){  //fileManager.StartNewFile(entity.Name + "RepositoryExt.cs");  //BeginNamespace(namespaceName, code);  #>    public partial interface I<#=entity.Name#>Service : IBaseService<<#=entity.Name#>>  {      }  <#}#>  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品69av| 日韩av资源在线播放| 中文字幕久热精品视频在线| 日韩电影在线观看免费| 中文在线不卡视频| 日韩中文字幕在线| 国内精品久久久久| 91欧美精品成人综合在线观看| 福利精品视频在线| 在线播放精品一区二区三区| 亚洲视频自拍偷拍| 久久理论片午夜琪琪电影网| 欧美视频第一页| 欧美大片免费观看在线观看网站推荐| 欧美丰满少妇xxxxx| 国产精品普通话| 日韩电视剧在线观看免费网站| 夜夜嗨av色一区二区不卡| 亚洲午夜未满十八勿入免费观看全集| 成人亲热视频网站| 国产免费一区二区三区香蕉精| 久久久久久久激情视频| 美女黄色丝袜一区| 91av在线国产| 91久久精品国产91性色| 久久国产精彩视频| 成人妇女免费播放久久久| 国产精品9999| 韩国美女主播一区| 久久精品99久久香蕉国产色戒| 久久久久999| 国产做受69高潮| 亚洲人成网站999久久久综合| 亚洲va久久久噜噜噜久久天堂| 日韩中文在线中文网在线观看| 国产欧美日韩精品丝袜高跟鞋| 91高潮在线观看| 国产日韩精品在线| 中文字幕亚洲二区| 久久精品国产亚洲精品2020| 国产精品∨欧美精品v日韩精品| 亚洲а∨天堂久久精品9966| 亚洲欧洲一区二区三区在线观看| 久久成年人免费电影| 久久久av一区| 亚洲精品电影网在线观看| 欧美激情视频一区| 国产日韩在线视频| 91成人在线播放| 91tv亚洲精品香蕉国产一区7ujn| 精品久久久久久久中文字幕| 国内精品久久久久伊人av| 国产日韩精品入口| 亚洲欧美日韩中文在线制服| 在线观看国产欧美| 中文字幕亚洲欧美日韩2019| 日韩中文字幕在线视频播放| 91视频九色网站| 国产精品久久久久久久久免费看| 日韩在线播放av| 国产精品久久电影观看| 久久精品一区中文字幕| 成人黄色免费看| 国产精品盗摄久久久| 欧美日韩亚洲系列| 午夜精品一区二区三区视频免费看| 91国自产精品中文字幕亚洲| 欧美色道久久88综合亚洲精品| 欧美大片在线影院| 欧美极品美女视频网站在线观看免费| 亚洲变态欧美另类捆绑| 日韩在线观看免费高清完整版| 91成人在线视频| 亚洲深夜福利网站| 亚洲欧美日韩区| 亚洲精品综合精品自拍| 88国产精品欧美一区二区三区| 中文字幕欧美日韩精品| 亚洲国产精品推荐| 日韩性xxxx爱| 国内偷自视频区视频综合| 久久久久国产精品免费网站| 欧美日韩国产精品一区二区不卡中文| 亚洲精品欧美日韩专区| 国产91成人在在线播放| 精品视频www| 亚洲自拍偷拍在线| 97视频免费在线观看| 国产欧美亚洲精品| 黄网动漫久久久| 亚洲成人激情在线观看| 久久成人精品视频| 操91在线视频| 久久久久久久久久国产| 91视频九色网站| 国产一区二区在线免费| 国产一区二区在线播放| 国产日韩欧美视频在线| 午夜精品久久久久久久白皮肤| 成人久久久久久久| 亚洲电影免费观看| 日韩亚洲欧美中文高清在线| 91视频-88av| 2020久久国产精品| 国产成人激情小视频| 搡老女人一区二区三区视频tv| 国产成人综合av| 成人激情视频免费在线| 精品无人区太爽高潮在线播放| 亚洲成人黄色网址| 欧美精品videos| 国产精品v日韩精品| 57pao国产成人免费| 91av视频在线免费观看| 亚洲人免费视频| 亚洲精品福利免费在线观看| 国产精品视频xxxx| 国产成人精品视| 成人免费视频在线观看超级碰| 日韩在线视频二区| 中国china体内裑精亚洲片| 日韩久久午夜影院| 日韩av综合网站| 亚洲bt欧美bt日本bt| 欧美xxxx18国产| 日本19禁啪啪免费观看www| 国产精品久久久久久搜索| 91成人国产在线观看| 欧美中文字幕在线视频| 欧美一区二区大胆人体摄影专业网站| 91地址最新发布| 91美女片黄在线观看游戏| 国产精品一区二区久久久久| 欧美日韩国产限制| 8x海外华人永久免费日韩内陆视频| 国产精品视频精品视频| 国产精品第一页在线| 国产ts人妖一区二区三区| 成人午夜激情网| 91久久精品日日躁夜夜躁国产| 日本高清不卡的在线| 91中文精品字幕在线视频| 98精品国产自产在线观看| 中文字幕久热精品在线视频| 精品夜色国产国偷在线| 欧美激情乱人伦| 亚洲摸下面视频| 在线日韩中文字幕| 国产精品国模在线| 日本道色综合久久影院| 国产999精品久久久影片官网| 久久久久免费精品国产| 国产亚洲日本欧美韩国| 日本中文字幕不卡免费| 欧美亚洲日本网站| 欧美亚洲在线视频| 亚州精品天堂中文字幕| 精品美女永久免费视频| 国产精品自产拍高潮在线观看| 欧美精品久久久久a| 91国产精品91| 久久夜色精品亚洲噜噜国产mv| 亚洲精品98久久久久久中文字幕| 国产精品国产福利国产秒拍|