一、T4模板說明
1.T4模板是用來生成Model層實體類的
2.文件后綴為.tt
3.需要修改配置主要有:引用的SqlSugar.dll的位置、生成實體類的位置及生成實體類的命名空間
4.T4模板生成代碼對數據庫有要求,數據庫應該是不區分大小寫的,如果你創建的數據庫是否區分大小寫的“Chinese_PRC_CS_AS ”,
5.T4模板生成代碼,中包括創建的視圖
那么會拋出異常 'SYSOJBECTS'對象無效,關於修改數據庫是否區分大小寫可以參考:http://blog.csdn.net/u011127019/article/details/53283251
二、T4模板使用步驟
1.創建項目后,引用SqlSugar.dll
2.添加T4模板:右鍵項目,選擇【運行時文本模板】,后綴為.tt
還可以,將原Demo中的模板,直接Copy到本項目中
原Demo中的文件內容為:

<#@ template debug="false" hostspecific="true" language="C#" #> <#@ import namespace="System.Collections.Generic" #> <#@ assembly name="System.Core" #> <#@ assembly name="System.Xml" #> <#@ assembly name="System.Xml.Linq" #> <#@ assembly name="System.Data" #> <#@ import namespace="System.Linq" #> <#@ import namespace="System.Text" #> <#@ import namespace="System.Collections.Generic" #> <#@ import namespace="SqlSugar" #> <#@ import namespace="System.IO" #> <#@ import namespace="System.Web" #> <#@ assembly name="$(SolutionDir)\WebTest\App_Lib\SqlSugar.dll" #> <# //當前項目目錄 string projectDir = Host.ResolveAssemblyReference("$(ProjectDir)"); //解決方案目錄 string solutionDir = Host.ResolveAssemblyReference("$(SolutionDir)"); using (var db = new SqlSugarClient("server=.;Initial Catalog=SqlSugarTest;Persist Security Info=True;User ID=sa;Password=sasa")) { db.ClassGenerating.CreateClassFiles(db, "E://T4/Models","Models"); }; #>
3.修改T4模板內容:
修改完數據庫連接字符串,生成路徑,命名空間后,快捷鍵Ctrl+S如果成功的情況下,會自動生成Model層到指定記錄。
4.如果需要修改Model層類文件的生成內容,可以直接修改源代碼的模板,也可以使用代碼的方式來生成Model層,請往下看。
三、使用代碼生成 model層
//T4 模板代碼執行 using (var db = new SqlSugarClient("server=.;Initial Catalog=sysstudent;Persist Security Info=True;User ID=sa;Password=123")) { //可以結合別名表,請看別名表的用法 //db.SetMappingTables(mappingTableList); db.ClassGenerating.CreateClassFiles(db, (@"F:\SolutionSet\MVC_Solution\SugarTwo\SugarTwo.Model\Model"), "SugarTwo.Model"); //只生成student和school表的實體 db.ClassGenerating.CreateClassFilesByTableNames(db, "e:/TestModels2", "Models", new string[] { "student", "school" }); //根據表名生成class字符串 var str = db.ClassGenerating.TableNameToClass(db, "Student"); var dynamicToClassStr = db.ClassGenerating.DynamicToClass(new { id = 1 }, "dyName"); //根據SQL語句生成class字符串 // var str2 = db.ClassGenerating.SqlToClass(db, "select top 1 * from Student", "student"); //改變值(lassTemplate.ItemTemplate=XXXX)可以自定義格式 var tempItem = ClassTemplate.ItemTemplate;//例如可以在生成的實體添加默認構造函數給指定的字段賦默認值或者公司信息等 var temp = ClassTemplate.Template; //設置新格式模板 //主鍵Guid.New(), //CreateTime為DateTime.Now //IsRemove=0 //UpdateTime為DateTime.Now ClassTemplate.Template = "using System;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace $namespace\r\n{\r\n public class $className\r\n {\r\n public $className() \r\n { \r\n this.CreateTime = DateTime.Now;\r\n this. = 0;\r\n this.UpdateTime=DateTime.Now;\r\n this.$primaryKeyName=Guid.NewGuid().ToString(\"N\").ToUpper();\r\n }\r\n $foreach\r\n }\r\n}\r\n"; //新格式的實體字符串 var str3 = db.ClassGenerating.TableNameToClass(db, "Student"); }
使用代碼生成Model層,有個好處,如果T4模板在生成代碼的過成功拋出異常,可以調試查看。
如果想自定義生成實體的一些格式請改變這3個靜態變量的模版
var tempItem=ClassTemplate.ItemTemplate; 類的模版 var temp=ClassTemplate.Template ; 字段模版 ClassTemplate.ClassFieldSummaryTemplate 字段摘要模版
更多: