<#@ template debug="false" hostspecific="true" language="C#" #> <#@ assembly name="System.Data" #> <#@ assembly name="System.xml" #> <#@ import namespace="System.Collections.Generic" #> <#@ import namespace="System.Data.SqlClient" #> <#@ import namespace="System.Data" #> <#@ import namespace="System.Text.RegularExpressions" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Linq" #> // 导入MultipleOutputHelper.ttinclude文件 <#@ include file="..\MultipleOutputHelper.ttinclude" #> <# string connectionString=@"Server=192.168.0.240; Database=NXDynamic; user Id=sa;password=1q2w3e4r!@"; SqlConnection conn = new SqlConnection(connectionString); conn.Open(); string selectQuery ="SET FMTONLY ON; select * from @tableName; SET FMTONLY OFF;"; SqlCommand command = new SqlCommand(selectQuery,conn); SqlDataAdapter ad = new SqlDataAdapter(command); System.Data.DataSet ds = new DataSet(); var manager = Manager.Create(Host, GenerationEnvironment); string[] restrictions = new string[4]; restrictions[1] = "dbo"; restrictions[3] = "BASE TABLE"; System.Data.DataTable schema = conn.GetSchema("Tables",restrictions); foreach(System.Data.DataRow row in schema.Rows) { ds.Tables.Clear(); string tb_name= row["TABLE_NAME"].ToString(); command.CommandText = selectQuery.Replace("@tableName",row["TABLE_NAME"].ToString()); ad.FillSchema(ds, SchemaType.Mapped,tb_name); manager.StartNewFile(tb_name+".cs");#> using System; using System.Collections.Generic; using System.Runtime.Serialization; using DapperORMCore.Dapper; namespace NXWMS.DynamicDataAccess.BLL { /// /// 实体-<#=tb_name#> /// public partial class <#=tb_name#> : IEntity { <# PushIndent(" "); Regex reg = new Regex("^[0-9]+$"); foreach (DataColumn dc in ds.Tables[0].Columns) { //ADP表结构设计真乱,还有用111作为列头的? 还有用相同列名为表名的 Match ma=reg.Match(dc.ColumnName); if(!ma.Success && tb_name!=dc.ColumnName) { WriteLine("public " + dc.DataType.Name+ (dc.AllowDBNull && (dc.DataType.Name.ToLower() != "string" && dc.DataType.Name.ToLower() != "byte[]") ? "? ": " ") + dc.ColumnName + " { get; set; }"); } } PopIndent(); #> } } <# manager.EndBlock(); } conn.Close(); manager.Process(true); #>