自定义tt文本模板实现MySql指数据库中生成实体类

1.在项目中依次点击“添加”/“新建项”,选择“文本模板”,输入名称后点击添加。

2.在Base.tt中添加如下代码。

复制代码
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#@ Assembly Name="System.Core" #>
<#@ Assembly Name="System.Windows.Forms" #>
<#@ Assembly Name="MySql.Data.dll" #>
<#@ Assembly Name="System.Data" #>
<#@ Assembly Name="System" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Diagnostics" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections" #>
<#@ import namespace="System.Collections.Generic" #> 
<#@ import namespace="MySql.Data" #>
<#@ import namespace="MySql.Data.MySqlClient" #>

//数据库基本信息设置
<# 
    string Server="localhost";
    string UId="root";
    string PWd="fxy19940923..";
    string Db_Name="cxkdb";
#>
//获取数据库中各表基本数据
<#
    string conStr="server="+Server+";database="+Db_Name+";uid="+UId+";pwd="+PWd;
    MySqlConnection con=new MySqlConnection(conStr);
    con.Open();
    MySqlParameter mp=new MySqlParameter("@db_name",Db_Name);
    string sqlStr="select * from information_schema.COLUMNS where table_schema=@db_name ";
    MySqlCommand cmd=new MySqlCommand(sqlStr,con);
    cmd.Parameters.Add(mp);
    MySqlDataReader dr = cmd.ExecuteReader();

    var TableList=new List<string>();
    var DetailList=new List<Tuple<string,string,string>>();
    var TableName="";
    while(dr.Read())
    {
        var Table=dr["TABLE_NAME"].ToString();
        if(TableName==Table)
        {
            var Column=dr["COLUMN_NAME"].ToString();
            var DataTypeOld=dr["DATA_TYPE"].ToString();
            var DataType=DataTypeOld=="varchar"?"string":
                (DataTypeOld=="int"?"int":
                (DataTypeOld=="datetime"?"DateTime":
                (DataTypeOld=="decimal"?"decimal":
                (DataTypeOld=="char"?"string":
                (DataTypeOld=="bit"?"Boolean":"string")))));
            DetailList.Add(Tuple.Create(Table,DataType,Column));
        }
        else
        {
            TableList.Add(Table);
        }
        TableName=Table;
    }
#>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
复制代码

3.利用1中的方法新建DataBaseEntity.tt文本模板,并添加如下代码。

复制代码
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#@  include file="Base.tt" #>

namespace DataBaseEntity
{
<# foreach(var item in TableList) { #>
    public class <#= item #>
    {<# foreach(var detail in DetailList) {if( item == detail.Item1 ) { #> 
        public <#=detail.Item2#> <#=detail.Item3#> { get; set; } 
<#}}#>    }
<# } #>}
复制代码

4.将数据库的基本信息填写在Base.tt文件中,即“数据库基本设置”部分,然后依次保存Base.tt、DataBaseEntity.tt,在DataBase.tt目录下会生成对应的实体类。

原文地址:https://www.cnblogs.com/duanweishi/p/8135299.html