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指数据库中生成实体类的更多相关文章

  1. 使用T4为数据库自动生成实体类

    T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...

  2. J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式

    J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式   反向工程又称逆向工程.   开发项目涉及到的表太多,一个一个的写JAVA实体类很是费事.MyEcl ...

  3. 14.翻译系列:从已经存在的数据库中生成上下文类和实体类【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/code-first-from-existing-database.aspx EF 6 ...

  4. MyEclipse数据库反向生成实体类

    MyEclipse数据库反向生成实体类 “计应134(实验班) 凌豪” 当我们在开发项目涉及到的表太多时,一个一个的写JAVA实体类很是费事.然而强大的MyEclipse为我们提供简便的方法:数据库反 ...

  5. MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例

    1.我们通过DB与数据库建立连接 2.建立web工程,构建Hibernate框架 3.通过table生成实体类

  6. MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程

    前文: hibernate带给我们的O/RMapping思想是很正确的,即从面相对象的角度来设计工程中的实体对象,建立pojo,然后在编写hbm.xml映射文件来生成数据表.但是在实际开发中,往往我们 ...

  7. 如何通过java反射将数据库表生成实体类?

    首先有几点声明: 1.代码是在别人的基础进行改写的: 2.大家有什么改进的意见可以告诉我,也可以自己改好共享给其他人: 3.刚刚毕业,水平有限,肯定有许多不足之处: 4.希望刚刚学习java的同学能有 ...

  8. Asp.Net Core如何根据数据库自动生成实体类

    通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...

  9. Eclipse实现数据库反向生成实体类(pojo)-------(插件安装和实现步骤的说明)

    一.插件安装 1.下载插件: http://jaist.dl.sourceforge.net/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R2008103 ...

随机推荐

  1. SQL EXISTS

    一直对exists的用法不清楚,本次学习exists,并作出相应学习总结. 1.创造测试环境SYS@ora122>create table a(id )); SYS@ora122>inse ...

  2. pandas Dataframe 构造

  3. 回收机制GC

    .NET 之 垃圾回收机制GC 一.GC的必要性 1.应用程序对资源操作,通常简单分为以下几个步骤:为对应的资源分配内存 → 初始化内存 → 使用资源 → 清理资源 → 释放内存. 2.应用程序对资源 ...

  4. 远程登录多用户同时访问Win7系统远程桌面

    https://jingyan.baidu.com/article/ca00d56c384ea0e99febcf45.html 一,远程电脑上新增三个用户名   1 在远程电脑桌面,右击[计算机]图标 ...

  5. sqler sql 转rest api 的工具试用

    sqler 从开源很快就获取了1k的star,使用起来很方便,而且也很灵活,支持的数据库也比较多. 支持的功能 无需依赖,可独立使用: 支持多种数据可类型,包括:SQL Server, MYSQL, ...

  6. keydown,keypress,keyup三者之间的区别

    最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件 ...

  7. oracle-null和默认值

    Oracle的默认值处理要当心,如果应用中使用的是ORM工具,则必须要考虑对于字段为Null的处理,必要时在ORM工具中将Null转换为default或插入时去掉值为Null的字段. 可以将下面的系统 ...

  8. 24 正则表达式 re模块

    一.正则表达式 1.字符组 ① [abc] 匹配a或b或c ②  [a-z] 匹配a到z之间的所有字⺟ [0-9]匹配所有阿拉伯数字 2.元字符 3.量词 4.重要搭配 ①  .*? ②  .*?x  ...

  9. 漫谈 C++ 的 内存堆 实现原理

    如果我来设计 C++ 的 内存堆 , 我会这样设计 : 进程 首先会跟 操作系统 要 一块大内存区域 , 我称之为 Division , 简称 div . 然后 , 将这块 div 作为 堆 , 就可 ...

  10. direct3d

    DirectX for .Net procedure 1, install DXSDK  https://www.microsoft.com/en-us/download/details.aspx?i ...