1. <#@ template debug="false" hostspecific="true" language="C#" #>
  2. <#@ assembly name="System.Data" #>
  3. <#@ assembly name="System.xml" #>
  4. <#@ import namespace="System.Collections.Generic" #>
  5. <#@ import namespace="System.Data.SqlClient" #>
  6. <#@ import namespace="System.Data" #>
  7. <#@ assembly name="System.Core" #>
  8. <#@ import namespace="System.Linq" #>
  9. // 导入MultipleOutputHelper.ttinclude文件
  10. <#@include file="$(SolutionDir)\HClubMall.Model\T4\MultipleOutputHelper.ttinclude" #>
  11.  
  12. <#
  13. var manager = Manager.Create(Host, GenerationEnvironment);
  14. manager.StartHeader();
  15. #>
  16.  
  17. using System;
  18. using System.Collections.Generic;
  19. using System.Linq;
  20. using System.Text;
  21.  
  22. namespace HClubMall.Model
  23. {
  24. <# manager.EndBlock(); #>
  25.  
  26. <#
  27. string connectionString= "server=192.168.0.23;database=Hclub1031;uid=sa;pwd=seindotnet;";
  28. SqlConnection conn = new SqlConnection(connectionString);
  29. conn.Open();
  30.  
  31. string selectQuery ="SET FMTONLY ON; select * from @tableName; SET FMTONLY OFF;";
  32. SqlCommand command = new SqlCommand(selectQuery,conn);
  33. SqlDataAdapter ad = new SqlDataAdapter(command);
  34. System.Data.DataSet ds = new DataSet();
  35. System.Data.DataTable schema = conn.GetSchema("Tables");
  36.  
  37. foreach(System.Data.DataRow row in schema.Rows)
  38. {
  39. ds.Tables.Clear();
  40. string tb_name = row["TABLE_NAME"].ToString();
  41. command.CommandText = selectQuery.Replace("@tableName",row["TABLE_NAME"].ToString());
  42. ad.FillSchema(ds,SchemaType.Mapped,tb_name);
  43. manager.StartNewFile(tb_name+".cs");
  44. #>
  45. [Serializable]
  46. /// <summary>
  47. /// 实体-<#=tb_name#>
  48. /// </summary>
  49. public partial class <#=tb_name#>
  50. {
  51. <#
  52. PushIndent(" ");
  53. WriteLine(" #region 属性");
  54. foreach (DataColumn dc in ds.Tables[].Columns)
  55. {
  56. WriteLine("/// <summary>");
  57. WriteLine("/// ");
  58. WriteLine("/// </summary>");
  59. WriteLine("public " + dc.DataType.Name + (dc.AllowDBNull && (dc.DataType.Name.ToLower() != "string")&&(dc.DataType.Name.ToLower()!="byte[]") ? "? ": " ") + dc.ColumnName + " { get; set; }");
  60. }
  61. WriteLine("#endregion");
  62. PopIndent();
  63. #>
  64. }
  65. <#
  66. manager.EndBlock();
  67. }
  68. conn.Close();
  69. #>
  70.  
  71. <# manager.StartFooter(); #>
  72. }
  73. <# manager.EndBlock(); #>
  74.  
  75. <# manager.Process(true); #>

1.需要引用一个国外的批量生成代码模板MultipleOutputHelper.ttinclude

2.创建一个T4模板,复制上面的代码放到新创建的T4模板中。

3.Ctrl+S

4.效果图:

注意:

MultipleOutputHelper.ttinclude项目在桌面时会报错。

T4模板批量生成代码文件的更多相关文章

  1. 【转】- 使用T4模板批量生成代码

    前言 之前在 “使用T4模板生成代码 - 初探” 文章简单的使用了T4模板的生成功能,但对于一个模板生成多个实例文件,如何实现这个方式呢?无意发现一个解决方案 “MultipleOutputHelpe ...

  2. FluentData-新型轻量级ORM 利用T4模板 批量生成多文件 实体和业务逻辑 代码

    FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.Model 利用T4模板,[MultipleOutputHelper.ttinclude]批量生成多文件 ...

  3. T4模板批量生成代码

    大家通过比对下,就应该知道怎么玩. T4代码 <#@ template debug="false" hostspecific="true" languag ...

  4. PetaPoco T4模板修改生成实体

    PetaPoco T4 模板生成的实体类全部包含再一个.CS文件中.通过修改PetaPoco的T4模板,生成单文件实体. 1.生成单CS文件模板: SigleFile.ttinclude <#@ ...

  5. T4 模板自动生成带注释的实体类文件

    T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll 生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 如果你没有 ...

  6. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面

    前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...

  7. 让T4脱离VS生成代码

    让T4脱离VS生成代码 最近项目快结束:空闲时间相对多一点:为了以后工作方便点:索性研究了VS的T4: 写个代码生成器:以后可以通过代码生成器调用项目里面的Dll直接生成代码或者xml: 应用以下两个 ...

  8. 黄聪:如何使用CodeSmith批量生成代码(转:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html)

    先看看CodeSmith的工作原理: 简单的说:CodeSmith首先会去数据库获取数据库的结构,如各个表的名称,表的字段,表间的关系等等,之后再根据用户自定义好的模板文件,用数据库结构中的关键字替代 ...

  9. 《如何让TT T4模板输出多个文件(VS2010中)》-- access911.net 文章

    <如何让TT T4模板输出多个文件(VS2010中)>-- access911.net 文章   问题:   VS2010中自带的 TT 模板功能挺好用,但是如何定义其输出的目录,或者如何 ...

随机推荐

  1. CentOS6安装Pyhon3

    一,从官方下载Python3.6 [root@linux-node1 src]# pwd /usr/local/src [root@linux-node1 src]# wget https://www ...

  2. SQL优化:清理生产环境中已失效字段基本步骤

    1.统计相应字段的数据情况(如:几年没更新,无数据等情况) 2.确认产品逻辑已无效(产品经理邮件确认) 3.数据备份 4.将数据清空(置为0或空) 5.测试环境中删除引用页面 6.修改定时程序,存储过 ...

  3. Gym 101147J Whistle's New Car(dfs)

    https://vjudge.net/problem/Gym-101147J 题意: 有n个城市,每个城市有一个权值,表示在这个城市的加油站可以加多少油. 现在要计算每个城市i,有多少个城市j可以到达 ...

  4. POJ 1034 The dog task(二分图匹配)

    http://poj.org/problem?id=1034 题意: 猎人和狗一起出去,狗的速度是猎人的两倍,给出猎人的路径坐标,除了这些坐标外,地图上还有一些有趣的点,而我们的狗,就是要尽量去多的有 ...

  5. vim 安装vim-airline

    在.vimrc中添加 Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' 然后打开vim编辑器执行 :Pl ...

  6. Android之水波纹点击效果(RippleView)

    Android5.0后各种炫的效果纷纷出来,写这篇博客主要是讲的是按钮点击效果带有的水波纹(波浪式). 当然我写的这个是自定义来实现的,在低版本(5.0一下)也可以实现点击效果.看看效果图: 上图可看 ...

  7. UVA-11383 Golden Tiger Claw (KM算法)

    题目大意:一张可行二分图的权值以邻接矩阵的形式给了出来,现在要找每一个节点的可行顶标,使顶标和最小. 题目分析:直接用KM算法,结束后顶标之和最小...模板题. 代码如下: # include< ...

  8. 兼容360模式自动播放视频【需要flvpalyer.swf】

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://down ...

  9. VirtualBox使用物理硬盘建立磁盘

    VirtualBox,只能用命令行来 建立磁盘才可以使用物理硬盘. 1.运行cmd,cd进入你的VirtualBox目录,如:  cd C:\Program Files\Sun\VirtualBox ...

  10. OPENCV Linux安装

    https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html