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. Kafka高可用实现原理

    数据存储格式 Kafka的高可靠性的保障来源于其健壮的副本(replication)策略.一个Topic可以分成多个Partition,而一个Partition物理上由多个Segment组成. Seg ...

  2. mysql时间日期函数总结(转)

    DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03');  ...

  3. 2017 乌鲁木齐赛区网络赛 J Our Journey of Dalian Ends 费用流

    题目描述: Life is a journey, and the road we travel has twists and turns, which sometimes lead us to une ...

  4. Java中的内部类————以及jdk1.8的lambda表达式

    一.内部类学习导图 1>.静态内部类: 使用static修饰符来修饰内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象.因此使用static修饰的内部类被称为静态内部类. publi ...

  5. url的反向解析

    1. url的语法格式: url(regex, views, **kwargs, name) name:为地址起别名,反向解析时使用 2.反向解析 对于Django中的url反向解析,是分模板和视图的 ...

  6. 20155219 2016-2017-2 《Java程序设计》第8周学习总结

    20155219 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口, ...

  7. centos 端口开放及关闭 【转】

    之前有讲过公司新买的服务器使用的是CentOS 5.5,部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页.因为以前部署在Win Ser ...

  8. tcp面试题

    常见面试题[问题1]为什么连接的时候是三次握手,关闭的时候却是四次握手? 答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文.其中ACK报文是用来应答的, ...

  9. PS学习之如何把小姐姐塞进瓶子里

    准备素材 开始制作 用PS新建一个国际通用纸张大小的画布 分辨率可以调为72 改变背景色 插入图片 水平居中对齐 插入木质素材 放大 覆盖之前的素材 调整图层顺序 创建剪切蒙版 对木桩添加曲线 设置立 ...

  10. BOM-JavaScript浏览器的对象模型

    BOM-JavaScript是运行在浏览器中的,所以提供了一系列对象用于和浏览器窗口进行交互,这些对象主要包括window.document.location.navigator和screen等.通常 ...