国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 那坡县| 周至县| 平乐县| 湘潭县| 印江| 贵州省| 镇安县| 宝坻区| 竹山县| 裕民县| 诸暨市| 宁化县| 资兴市| 济阳县| 葵青区| 横山县| 宝兴县| 泽州县| 武清区| 七台河市| 庄浪县| 邹城市| 潼南县| 河间市| 曲靖市| 彰化县| 张家港市| 汉源县| 中方县| 永安市| 周宁县| 鄂伦春自治旗| 博罗县| 无棣县| 天津市| 南平市| 泰宁县| 马尔康县| 宜君县| 师宗县| 海南省|