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

2023-05-26,,

自定义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目录下会生成对应的实体类。

自定义tt文本模板实现MySql指数据库中生成实体类的相关教程结束。

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

下载本文的Word格式文档,以方便收藏与打印。