zoukankan      html  css  js  c++  java
  • T4模板demo

    T4模板_根据DB生成实体类

     

       为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下

    1.首先创建一个项目,并添加文本模板:

    2.添加 文本模板:

    3.向T4文本模板文件添加代码:

    复制代码
    <#@ template language="C#" debug="True" hostspecific="True" #>
    
    <#@ assembly name="System.Data" #> 
    
    <#@ assembly name="System.xml" #>
    
    <#@ import namespace="System.Collections.Generic" #>
    
    <#@ import namespace="System.Data.SqlClient" #>
    
    <#@ import namespace="System.Data" #>
    
    <#@ output extension=".cs" #>
    
     using System;
    
    namespace Test.T4
    
    {     
    
          <#
    
               string connectionString="data source=(local);initial catalog=musicstore;user id=sa;password=123456;";
    
               SqlConnection conn = new SqlConnection(connectionString);
    
               conn.Open();
    
               DataTable schema = conn.GetSchema("TABLES");
    
               string strSql = "select * from @tableName";
    
               SqlCommand command = new SqlCommand(strSql,conn);
    
               SqlDataAdapter ad = new SqlDataAdapter(command);
    
               DataSet ds = new DataSet();        
    
               foreach(DataRow row in schema.Rows)
    
               {  #>  
    
               public class <#= row["TABLE_NAME"].ToString().Trim() #>                   
    
               {    <#                     
    
                       ds.Tables.Clear();
    
                      command.CommandText = strSql.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 #> { get; set; }
                  <# }  #>         
               }                  
    
               <# 
                      
               } #>                
               <# conn.Close(); #>
    }
    复制代码

    DataTable schema = conn.GetSchema("TABLES");获取数据库的表名,然后通过foreach语句逐个遍历,更具表名查询字段名,生成实体类。

    好了,保存一下,就可以看到DBToClass.cs文件类已经生成好了实体类了。

  • 相关阅读:
    [HAOI2015][bzoj 4033]树上染色(树dp+复杂度分析)
    20190716NOIP模拟赛T1 礼物(概率dp+状压)
    20190716NOIP模拟赛T2 通讯(tarjan缩点+贪心)
    延迟载入Dll(动态载入Dll)
    Dll重定向(尚存否?)
    delete和delete[] 区别
    06 序列号保护 学习分析(字符串)
    05 初识加壳脱壳
    04 复制删除行为IDA反汇编
    03 复制行为动态分析
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3723313.html
Copyright © 2011-2022 走看看