自定义tt文本模板实现MySql指数据库中生成实体类_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 自定义tt文本模板实现MySql指数据库中生成实体类

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

 2017/8/27 3:08:48  付旭洋  程序员俱乐部  我要评论(0)
  • 摘要:1.在项目中依次点击“添加”/“新建项”,选择“文本模板”,输入名称后点击添加。2.在Base.tt中添加如下代码。<#@templatedebug="false"hostspecific="false"language="C#"#><#@outputextension=".cs"#><#@AssemblyName="System.Core"#><#@AssemblyName="System.Windows.Forms"#><
  • 标签:模板 实现 数据库 数据 SQL 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目录下会生成对应的实体类。

 

发表评论
用户名: 匿名