麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99国内精品 | 视屏一区 | 男人久久天堂 | 成人毛片av在线 | 国产1区在线 | 国产宾馆3p国语对白 | 超碰人人做人人爱 | 日韩毛片网站 | 成人福利视频网站 | 在线观看国产日韩 | 欧美日韩后 | 91短视频在线播放 | 欧美成年性h版影视中文字幕 | 国产福利视频在线观看 | 日韩av片网站 | 成人区精品一区二区婷婷 | 日本欧美一区二区三区视频麻豆 | 国内精品久久久久久影视8 嫩草影院在线观看网站成人 | 久久精品爱 | 欧美精品| 最新av在线播放 | 中文字幕亚洲视频 | 欧美a级大胆视频 | 最新se94se在线欧美 | 免费看国产视频 | 精品国产视频一区二区三区 | 中文字幕欧美一区二区三区 | 男男啪羞羞视频网站 | 一本色道久久综合狠狠躁篇适合什么人看 | 黄色男女视频 | 91麻豆精品国产91久久久点播时间 | 精品国产乱码久久久久久丨区2区 | 久久久久久久久久网 | 日本在线播放一区 | 午夜在线观看视频网站 | 91精品国产乱码久久久久 | 国产成人av免费 | av在线直播观看 | xnxx 日本免费 | 国产成人高潮免费观看精品 | 成人情欲视频在线看免费 |