T4生成数据库实体类模板

来源:互联网 发布:c语言传值和传址 编辑:程序博客网 时间:2024/04/28 03:53

<#@ template language="C#" debug="True" hostspecific="True" #>

<#@ output extension=".cs" #>

<#@ assembly name="System.Data" #>

 

<#@ assembly name="System.xml" #>

<#@ import namespace="System.Collections.Generic" #>

<#@ import namespace="System.Data.SqlClient" #>

<#@ import namespace="System.Data" #>

 using System;

namespace MyProject.Entities

{     

      <#

           string connectionString = "Data Source=qinyanlu;Initial Catalog=Develop_RegisterManager;Persist Security Info=True;User ID=sa;Password=sa;Max Pool Size=100;Min Pool Size=5;Pooling=true;";

           SqlConnection conn = new SqlConnection(connectionString);

           conn.Open();

           System.Data.DataTable schema = conn.GetSchema("TABLES");

           string selectQuery = "select * from @tableName";

           SqlCommand command = new SqlCommand(selectQuery,conn);

           SqlDataAdapter ad = new SqlDataAdapter(command);

           System.Data.DataSet ds = new DataSet();        

           foreach(System.Data.DataRow row in schema.Rows)

           {  #>  

           public class <#= row["TABLE_NAME"].ToString().Trim('s') #>                   

           {    <#                     

                   ds.Tables.Clear();

                  command.CommandText = selectQuery.Replace("@tableName",row["TABLE_NAME"].ToString());

                  ad.FillSchema(ds, SchemaType.Mapped, row["TABLE_NAME"].ToString());         

                  foreach (DataColumn dc in ds.Tables[0].Columns)

                  {    #>                    

                  private <#= dc.DataType.Name #> _<#= dc.ColumnName.Replace(dc.ColumnName[0].ToString(), dc.ColumnName[0].ToString().ToLower())      #>;                      

                  public <#= dc.DataType.Name #> <#= dc.ColumnName #>

                  {

                     get { return _<#= dc.ColumnName.Replace(dc.ColumnName[0].ToString(), dc.ColumnName[0].ToString().ToLower()) #>; }

                     set { _<#= dc.ColumnName.Replace(dc.ColumnName[0].ToString(), dc.ColumnName[0].ToString().ToLower()) #> = value; }

                  }                                                

              <# }  #>         

           }                  

           <#

           } #>                

}

 

 

 

 

生成数据库实体类加注释:

 

 

<#@ template language="C#" debug="True" hostspecific="True"#>
<#@ output extension=".cs"#>
<#@ assembly name="System.Data"#>
<#@ assembly name="System.xml"#>
<#@ import namespace="System.Collections.Generic"#>
<#@ import namespace="System.Data.SqlClient"#>
<#@ import namespace="System.Data"#>
using System;
namespace MyProject.Entities
{
<#
string connectionString="Data Source=qinyanlu;Initial Catalog=Develop_RegisterManager;PersistSecurityInfo=True;User ID=sa;Password=sa;Max Pool Size=100;Min Pool Size=5;Pooling=true;";
SqlConnection conn=new SqlConnection(connectionString);
conn.Open();
System.Data.DataTable schema=conn.GetSchema("TABLES");
string selectQuery="select * from @tableName";
SqlCommand command=new SqlCommand(selectQuery,conn);
SqlDataAdapter ad=new SqlDataAdapter(command);
System.Data.DataSet ds=new DataSet();
foreach(System.Data.DataRow row in schema.Rows)
{#>
public class <#=row["TABLE_NAME"].ToString()#>
{<#
ds.Tables.Clear();
command.CommandText=selectQuery.Replace("@tableName",row["TABLE_NAME"].ToString());
ad.FillSchema(ds,SchemaType.Mapped,row["TABLE_NAME"].ToString());
foreach(DataColumn dc in ds.Tables[0].Columns)
{#>
public <#=dc.DataType.Name#> <#=dc.ColumnName#>;<#
string selectBZ=@"SELECT isnull(SysProperties.Value,'') FROM SysObjects,SysTypes,SysColumns LEFT JOIN SysProperties ON (Syscolumns.Id = Sysproperties.Id AND Syscolumns.Colid = Sysproperties.Smallid)
 WHERE (Sysobjects.Xtype ='u' OR Sysobjects.Xtype ='v') AND Sysobjects.Id = Syscolumns.Id AND SysTypes.XType = Syscolumns.XType
 AND SysTypes.Name <> 'sysname' AND Sysobjects.Name = '@table' AND SysColumns.Name='@column'";
 selectBZ=selectBZ.Replace("@table",row["TABLE_NAME"].ToString());
 selectBZ=selectBZ.Replace("@column",dc.ColumnName);
 SqlCommand commandBZ=new SqlCommand(selectBZ,conn);
 string BZ=commandBZ.ExecuteScalar().ToString().Replace("/r/n","");
#><#if(BZ.Length>0){Write("/t/t/*"+BZ+"*/");}#>

<#

}#>}<#}#>
}

原创粉丝点击