t4模板 mysql_.net core 用T4模板连接MySql生成实体类
.net core 用T4模板连接MySql生成实体类标题
4,把MySql.Data.dll放在项目根目录,也可以自行更改。
在之前参考那个博友的文章,他的是连接SQL server的。
下面是参考他的T4模板,进行了修改的:
//MySql.Data.dll需放在项目根目录也可以自行更改
// 声明字段
MySqlConnection conn;
string sql;
MySqlCommand command;
MySqlDataReader reader;
ListtablesName;
ListtablesMark;
MySqlDataReader markReader; //用来读取字段注释的Reader
string templateFileDir = Path.GetDirectoryName(Host.TemplateFile); //获取tt模板目录
// 数据库连接
string strConn = "Server=localhost;Database=tianya;User=root;Password=root;charset=utf8;"; //数据库连接字符串-这个换了环境就要改
conn = new MySqlConnection(strConn);
conn.Open();
// 查MySql数据库中有多少张表的sql语句
sql = "show table status";
command = new MySqlCommand(sql, conn);
reader = command.ExecuteReader();
tablesName = new List();
tablesMark = new List();
// 把表集合赋值到tablesName
while (reader.Read())
{
tablesName.Add(reader[0].ToString()); //获取表名称
tablesMark.Add(reader[17].ToString()); //获取表注释
}
reader.Close();
// 获取Visual Studio实例
EnvDTE.DTE dte = (EnvDTE.DTE)
((IServiceProvider)Host).GetService(typeof(EnvDTE.DTE));
EnvDTE.ProjectItem templateProjectItem =
dte.Solution.FindProjectItem(Host.TemplateFile);
// 循环映射模型文件
for (int i =0; i < tablesName.Count ; i++)
{
ListcolumsName = new List();
ListcolumsType = new List();
// 获取数据库表的字段的名称
sql = string.Format("SHOW COLUMNS FROM {0}", tablesName[i]);
command.CommandText = sql;
reader = command.ExecuteReader();
while (reader.Read())
{
columsName.Add(reader.GetString(0));
}
reader.Close();
// 获取数据库表的字段的类型
sql = string.Format("SELECT * FROM {0} LIMIT 0", tablesName[i]);
command.CommandText = sql;
reader = command.ExecuteReader();
reader.Read();
for(int z = 0 ; z < reader.FieldCount ; z++){
Type type =reader.GetFieldType(z);
columsType.Add(type);
}
reader.Close();
#>
//------------------------------------------------------------------------------
// // 此代码由T4模板自动生成
// 生成时间
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
/// ///
///
public class {
for(int j = 0; jsql = string.Format("show full fields from {0} where Field = '{1}'" ,
tablesName[i] , columsName[j].ToString());
command.CommandText = sql;
markReader = command.ExecuteReader();
markReader.Read();
#>
/// ///
///
public { get; set;}
} #>
}
byte[] byData = new byte[100];
char[] charData = new char[1000];
// 此地址与T4模板同目录
string path = templateFileDir +"\\"+tablesName[i]+".cs";
try
{
// 将生成的文件添加到T4模板下关联
File.WriteAllText(path , this.GenerationEnvironment.ToString());
templateProjectItem.ProjectItems.AddFromFile(path);
}
catch (IOException e)
{
Console.WriteLine(e.ToString());
}
this.GenerationEnvironment.Clear();
//↑↑清空T4模板当前的 文本模板转换进程(T4)用于组合生成的文本输出的字符串↑↑
}
command.Dispose();
conn.Close();
#>
t4模板 mysql_.net core 用T4模板连接MySql生成实体类相关推荐
- 自定义tt文本模板实现MySql指数据库中生成实体类
自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击"添加"/"新建项",选择"文本模板",输入名称后点击添加. 2. ...
- CodeSmith模板(生成实体类)
CodeSmith是一款与数据库相关的工具,只要与数据库相关的类都可以通过它编写模板来批量实现. <%@ Template Language="C#" TargetLangu ...
- .net core WebAPI 初探及连接MySQL
.net core WebAPI 初探及连接MySQL 1. 前言 笔者最近跟着微软官方文档学习.net core WebAPI,但发现其对 WebAPI 连接数据库.读取数据库方面讲得不够细致明了. ...
- 9.动态生成实体类,根据XML模板使用Emit生成动态类绑定到DataGrid
在实际项目中,我们可能会遇到用户自定义XML模板字段,根据这个模板上的字段来显示相应的字段的值到DataGrid.在这种情况下,需要使用 XmlReader解析获取这个用户自定义的XML模板上有哪些字 ...
- velocity笔记(一)什么是velocity,我们什么时候会使用到这个,基本语法,利用模板生成实体类的各层代码
目录 什么是velocity 应用场景 组成结构 快速入门 总结 基本语法 注释 非解析内容 引用 变量引用 属性引用 方法引用 指令 流程控制指令 #set 指令 #if/#elseif/#else ...
- idea数据库反向生成实体类_asp.net core 系列 21 EF现有数据库进行反向工程
一.概述 在上篇中使用EF基于数据模型创建数据库, 本篇继续使用 EF 基于数据库创建数据模型. 实现对已有数据库进行反向工程,来构建数据访问的 ASP.NET Core MVC 应用程序.已有数据库 ...
- .Net Core控制台amp;EFCore连接Mysql
在用惯了Asp.Net Core提供的基架后,反过来想一想,貌似忘记了控制台如何去连接数据库了,因此,写一篇文章来借此巩固下并以后再来回顾时,加快步骤. 1.新建一个.Net Core控制台,然后安装 ...
- ASP .NET Core使用connection string连接MySQL/MariaDB,并设置UTF-8编码
具体的使用文章参考我的这篇博客:ASP .NET Core Web 系列教程四:使用数据库进行交互(MySQL/MariaDB 版) 我这里介绍一下设置UTF-8的编码的Connection Stri ...
- efcore mysql坑,.net core 2.1 使用ef DBfirst 生成 实体映射遇到的坑 (Pomelo.EntityFrameworkCore.MySql 篇)...
core 2.1 发行不久,正好要把一个已存在的mysql db的项目 迁移至 core 2.1, 网上搜了很多帖子,基本两个工具类,一个是Pomelo.EntityFrameworkCore.MyS ...
最新文章
- 深入浅出统计学(十四)卡方分布
- 通过NFS实现简单的文件共享
- SAP QM中阶之Reference Operation Set 的使用
- mysql+drdb+HA
- spring + shiro + cas 实现sso单点登录
- java return none,返回列表结果为none
- 查看并开启MySQL的log-bin和general_log日志
- 大数据技术 思维导图
- java web 不用框架_MyShop-不用框架的基础javaweb项目
- Linux的Vim编辑器
- (转载)Hadoop常用SDK系列五 TotalOrderPartitioner
- pytorch torchvision的版本对应关系 pytorch历史版本
- python大数据开发学习路线
- matlab的otdr仿真,otdr软件下载
- 五款APP让你告别拖延症!余生愿你活成自己想要的样子
- linux测试网络带宽 360,Linux版360浏览器提示此为beta测试版本,已超过测试时间3个月的处理...
- LM334微电流源的制作
- 计算机游戏优化,Win10电脑玩游戏优化方法!必须关闭这几个设置,效果提升巨大...
- 【清华大学陈渝】 第十一章_死锁
- [笔记] 数据结构二刷【第一篇:线性表·栈·队列·递归】
热门文章
- xbox one无线手柄到底是蓝牙还是普通2.4G
- Unity3D 内存优化(一)对象池
- python表白神器原理_python仿抖音表白神器
- java浏览器内核_深入理解浏览器内核 - 概述
- 神经切断是近视眼形成的根本原因
- 机器人控制器编程课程大纲(Arduino+ROS+IoT+SLAM……)2019-2020-1
- 计算机如何识别数据恢复,【Mac数据恢复】如何恢复Mac数据到计算机?
- testlink界面优化_Testlink中文问题修改
- Flink CEP 在抖音电商的业务实践
- 教你玩转PS形状工具