T4模板使用(三):根据数据库生成文件

T4模板使用(三):根据数据库生成文件


作为t4模板的常驻用途之一,根据数据库生成相应文件会比较多用到,这篇就写一下如何使用数据库生成操作文件
本篇以entity为例,如需service自行比照。
先添加模板指令

<#@ template debug="false" hostspecific="true" language="C#" #>

引入所用类库

<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ assembly name="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>

代码块

<#
var ModelName = “”;//命名空间
var manager = new Manager(Host, GenerationEnvironment, true) { OutputPath = OutputPath };
var constr = "链接字符串";
using(SqlConnection conn = new SqlConnection(constr)){ 
         conn.Open(); 
         System.Data.DataTable schema = conn.GetSchema("TABLES"); //获取表
         foreach(System.Data.DataRow row in schema.Rows){
             manager.StartBlock(row["TABLE_NAME"]+".cs");//表名生成文件名
             //开始
#>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace <#=ModelName#>
{
    public class <#=row["TABLE_NAME"].ToString()#>
    {
<#
        string[] restrictionValues = new string[4];
        restrictionValues[0] = null; // Catalog
        restrictionValues[1] = null; // Owner
        restrictionValues[2] = row["TABLE_NAME"].ToString(); // Table
        restrictionValues[3] = null; // Column
        var getColumn = conn.GetSchema(SqlClientMetaDataCollectionNames.Columns,restrictionValues);  
        foreach(System.Data.DataRow column in getColumn.Rows)
        {
            var name = column["COLUMN_NAME"];//列名
            var type = column["DATA_TYPE"]; //数据库保存类型,这里我只封装了slqserver转c#类型,如果其他数据库请自己查询资料进行封账                     
            var sharpType = manager.GetCSharpType(type.ToString());
            var sType = column["IS_NULLABLE"].ToString() == "NO" ? sharpType:"Nullable<"+sharpType+">"; 
#>
        public <#=sType#> <#=name#> { get; set;}
<#
    }
#>       
    }
}
<#      
            //关闭块   
            manager.EndBlock();
        }
    }
    manager.Process(true);
#>             
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值