自定义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指数据库中生成实体类的更多相关文章
- 使用T4为数据库自动生成实体类
T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...
- J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式
J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式 反向工程又称逆向工程. 开发项目涉及到的表太多,一个一个的写JAVA实体类很是费事.MyEcl ...
- 14.翻译系列:从已经存在的数据库中生成上下文类和实体类【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/code-first-from-existing-database.aspx EF 6 ...
- MyEclipse数据库反向生成实体类
MyEclipse数据库反向生成实体类 “计应134(实验班) 凌豪” 当我们在开发项目涉及到的表太多时,一个一个的写JAVA实体类很是费事.然而强大的MyEclipse为我们提供简便的方法:数据库反 ...
- MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
1.我们通过DB与数据库建立连接 2.建立web工程,构建Hibernate框架 3.通过table生成实体类
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
前文: hibernate带给我们的O/RMapping思想是很正确的,即从面相对象的角度来设计工程中的实体对象,建立pojo,然后在编写hbm.xml映射文件来生成数据表.但是在实际开发中,往往我们 ...
- 如何通过java反射将数据库表生成实体类?
首先有几点声明: 1.代码是在别人的基础进行改写的: 2.大家有什么改进的意见可以告诉我,也可以自己改好共享给其他人: 3.刚刚毕业,水平有限,肯定有许多不足之处: 4.希望刚刚学习java的同学能有 ...
- Asp.Net Core如何根据数据库自动生成实体类
通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...
- Eclipse实现数据库反向生成实体类(pojo)-------(插件安装和实现步骤的说明)
一.插件安装 1.下载插件: http://jaist.dl.sourceforge.net/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R2008103 ...
随机推荐
- 2017-2018-2 20165228 实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165228 实验二<Java面向对象程序设计>实验报告 相关知识点 三种代码 伪代码:注释,与具体编程语言无关 产品代码:由伪代码翻译而来的具体编程语言语法相 ...
- Go parameter passing
package main import ( "fmt" ) func main() { fmt.Println("Hello, playground") var ...
- elfutils cc1: all warnings being treated as errors
/********************************************************************** * elfutils cc1: all warnings ...
- Unity反射探针用法教程
Unity 3D反射探针 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心 ...
- css有缝隙
- Apache 启动失败没有错误信息的解决办法
在cmd命令行 进入到apache安装bin目录 执行以下 httpd.exe -w -n "apache2.2" -k start 注意apache2.2是你安装的apache服 ...
- ubuntu安装mysql遇到的问题
ERROR 1698 (28000): Access denied for user 'root'@'localhost' ubantu linux下安装新版mysql,登录时必须sudo mysql ...
- whmcs模板路径
whmcs网站根目录 比如你的域名是server.nongbin.vip,你需要cd /home/wwwroot/server.nongbin.vip,该目录下然后,cd template/ 给文件夹 ...
- day 04 Java并发多线程
http://www.cnblogs.com/hellocsl/p/3969768.html?utm_source=tuicool&utm_medium=referralPS:而JVM 每遇到 ...
- maven(二)
1.1 Maven的好处 节省空间 对jar包做了统一管理 依赖管理 一键构建 可跨平台 应用在大型项目可提高开发效率 1.2 Maven安装部署配置 1.3 Maven的仓库 ...