SqlSugar框架T4模板的使用
一、T4模板说明
1.T4模板是用来生成Model层实体类的
2.文件后缀为.tt
3.需要修改配置主要有:引用的SqlSugar.dll的位置、生成实体类的位置及生成实体类的命名空间
4.T4模板生成代码对数据库有要求,数据库应该是不区分大小写的,如果你创建的数据库是否区分大小写的“Chinese_PRC_CS_AS ”,
5.T4模板生成代码,中包括创建的视图
那么会抛出异常 'SYSOJBECTS'对象无效,关于修改数据库是否区分大小写可以参考:http://blog.csdn.net/u011127019/article/details/53283251
二、T4模板使用步骤
1.创建项目后,引用SqlSugar.dll
2.添加T4模板:右键项目,选择【运行时文本模板】,后缀为.tt
还可以,将原Demo中的模板,直接Copy到本项目中
原Demo中的文件内容为:
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ assembly name="System.Data" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="SqlSugar" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Web" #>
<#@ assembly name="$(SolutionDir)\WebTest\App_Lib\SqlSugar.dll" #> <# //当前项目目录
string projectDir = Host.ResolveAssemblyReference("$(ProjectDir)"); //解决方案目录
string solutionDir = Host.ResolveAssemblyReference("$(SolutionDir)"); using (var db = new SqlSugarClient("server=.;Initial Catalog=SqlSugarTest;Persist Security Info=True;User ID=sa;Password=sasa"))
{
db.ClassGenerating.CreateClassFiles(db, "E://T4/Models","Models"); };
#>
3.修改T4模板内容:
修改完数据库连接字符串,生成路径,命名空间后,快捷键Ctrl+S如果成功的情况下,会自动生成Model层到指定记录。
4.如果需要修改Model层类文件的生成内容,可以直接修改源代码的模板,也可以使用代码的方式来生成Model层,请往下看。
三、使用代码生成 model层
//T4 模板代码执行
using (var db = new SqlSugarClient("server=.;Initial Catalog=sysstudent;Persist Security Info=True;User ID=sa;Password=123"))
{
//可以结合别名表,请看别名表的用法
//db.SetMappingTables(mappingTableList);
db.ClassGenerating.CreateClassFiles(db, (@"F:\SolutionSet\MVC_Solution\SugarTwo\SugarTwo.Model\Model"), "SugarTwo.Model"); //只生成student和school表的实体
db.ClassGenerating.CreateClassFilesByTableNames(db, "e:/TestModels2", "Models", new string[] { "student", "school" }); //根据表名生成class字符串
var str = db.ClassGenerating.TableNameToClass(db, "Student");
var dynamicToClassStr = db.ClassGenerating.DynamicToClass(new { id = }, "dyName"); //根据SQL语句生成class字符串
// var str2 = db.ClassGenerating.SqlToClass(db, "select top 1 * from Student", "student"); //改变值(lassTemplate.ItemTemplate=XXXX)可以自定义格式
var tempItem = ClassTemplate.ItemTemplate;//例如可以在生成的实体添加默认构造函数给指定的字段赋默认值或者公司信息等
var temp = ClassTemplate.Template;
//设置新格式模板
//主键Guid.New(),
//CreateTime为DateTime.Now
//IsRemove=0
//UpdateTime为DateTime.Now
ClassTemplate.Template = "using System;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace $namespace\r\n{\r\n public class $className\r\n {\r\n public $className() \r\n { \r\n this.CreateTime = DateTime.Now;\r\n this. = 0;\r\n this.UpdateTime=DateTime.Now;\r\n this.$primaryKeyName=Guid.NewGuid().ToString(\"N\").ToUpper();\r\n }\r\n $foreach\r\n }\r\n}\r\n"; //新格式的实体字符串
var str3 = db.ClassGenerating.TableNameToClass(db, "Student");
}
使用代码生成Model层,有个好处,如果T4模板在生成代码的过成功抛出异常,可以调试查看。
如果想自定义生成实体的一些格式请改变这3个静态变量的模版
var tempItem=ClassTemplate.ItemTemplate; 类的模版
var temp=ClassTemplate.Template ; 字段模版
ClassTemplate.ClassFieldSummaryTemplate 字段摘要模版
更多:
.Net开源SqlServer ORM框架SqlSugar整理
SqlSugar框架T4模板的使用的更多相关文章
- 从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)
原本关于T4模板原想分5个章节详细解说的,不过因为最近比较忙,也不想将整个系列时间拉得太长,所以就将它们整合在一块了,可能会有很多细节没有讲到,希望大家自己对着代码与模板去研究. 本章代码量会比较大, ...
- 从零开始编写自己的C#框架(12)——T4模板在逻辑层中的应用(一)(附源码)
对于T4模板很多朋友都不太熟悉,它在项目开发中,会帮我们减轻很大的工作量,提升我们的开发效率,减少出错概率.所以学好T4模板的应用,对于开发人员来说是非常重要的. 园子里对于T4模板的介绍与资料已经太 ...
- T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll
生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文 ...
- NFine框架的T4模板
1.前言 前段时间在网上看到一个开源框架很好的.开源:ASP.NET MVC+EF6+Bootstrap开发框架,写代码就是比较比较麻烦,分层比较多,对于我这种偷懒的人就想到了写一个T4模板.不了解框 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。
快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC.EntityFrameWork.T4模板技术. 产品界面如下图所示: 源码结构: 开放全部源码,如有需要请联系,QQ:1107141 ...
- 从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)
最近这段时间特忙,公事私事,忙得有时都没时间打开电脑了,这两周只能尽量更新,以后再将章节补回来. 直接进入主题,通过上一章节,大家明白了怎么使用模板类编写T4模板,本章进的是一些简单技巧的应用 1.首 ...
- asp.net mvc 通过T4模板生成框架
http://www.cnblogs.com/rdst/archive/2012/08/13/2637210.html http://www.kuqin.com/shuoit/20140716/341 ...
- 使用T4模板为EF框架添加数据库实体注释
网上有一个解决方法如下: http://www.cnblogs.com/stone_w/archive/2012/10/25/2738345.html 不过我试了下没解决太麻烦了 而且一旦EF要重新生 ...
随机推荐
- HDU-2549 壮志难酬
壮志难酬 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- linux下出现+ ls --color=auto -l --color=auto...++ echo -ne '\033]0;root@imon-2:~'等
[root@imon-2 ~]# cd /root/ + cd /root/ ++ echo -ne '\033]0;root@imon-2:~' [root@imon-2 ~]# ll + ls - ...
- 通过修改 Apache 的配置文件 htaccess 文件实现自定义404页面
最近在学习使用Apache服务器的配置,做一个记录. Apache下有个.htaccess文件,是Apache的一个特殊的配置文件.这个配置文件默认是没有的,要手动在各自的项目的根目录编写才行. 要实 ...
- Java之Arrays.asList陷阱
Java.Util.Arrays可以将数组转换为List,具体的定义如下: @SafeVarargs public static <T> List<T> asList(T... ...
- JavaScript高级程序设计36.pdf
TreeWalker TreeWalker是NodeIterator的更高级的版本,除了包括nextNode()和previousNode()在内的相同功能外,这个类型还提供了用于不同方向上遍历DOM ...
- 斐波那契fib
输入N和N个数(N<=10,每个数<=10^17),对于每个数,要输出能用几个斐波那契数加加减减得到 样例输入: 35101070 样例输出: 124 直接拷题解: fib[i]表示斐波那 ...
- PHP中使用函数array_merge()合并数组
如果明白数组其实就是map的话,我想你就会明白array_merge为什么要这么实现了 PHP中合并数组分成两种情况 1.如果这两个数组中有相同的字符串键名: <?php header('Con ...
- NIO组件Selector调用实例
*对于nio的非阻塞I/O操作,使用Selector获取哪些I/O准备就绪,注册的SelectionKey集合记录关联的Channel这些信息.SelectionKey记录Channel对buffer ...
- Spring源代码解析(收藏)
Spring源代码解析(收藏) Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的 ...
- 全文索引(三)lucene 分词 Analyzer
分词: 将reader通过阅读对象Analyzer字处理,得到TokenStream处理流程被称为分割. 该解释可能是太晦涩.查看示例,这个东西是什么感性的认识. 样品:一段文本"this ...