一个基于DpperHelper的t4模板

Model

Model

Model

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Data.DataSetExtensions.dll" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\EF.Utility.CS.ttinclude" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\OutputHelper.ttinclude" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\DbHelper.ttinclude" #>

<#
var manager = Manager.Create(Host, GenerationEnvironment);

foreach(DbTable dbTable in DbHelper.GetDbTables(config.ConnectionString, config.DbDatabase))
{

string item=dbTable.TableName;
manager.StartNewFile(item+".cs");#>
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由T4模板自动生成
// 生成时间 <#=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")#>
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace OADemo.Model
{
public partial class <#=item#>
{
<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, item)) {#>

/// <summary>
/// <#=column.Remark#>
/// </summary>
public <#= column.CSharpType#><# if(column.CommonType.IsValueType && column.IsNullable){#>?<#}#> <#=column.ColumnName#> { get; set; }
<#}#>
}
}

<#

manager.EndBlock();
}
manager.Process(true);
#>

 DAL

 

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Data.DataSetExtensions.dll" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\EF.Utility.CS.ttinclude" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\OutputHelper.ttinclude" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\DbHelper.ttinclude" #>

<#
var manager = Manager.Create(Host, GenerationEnvironment);
foreach(DbTable dbTable in DbHelper.GetDbTables(config.ConnectionString, config.DbDatabase))
{
string tableName=dbTable.TableName;
manager.StartNewFile(tableName+"Dal.cs");#>
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由T4模板自动生成
// 生成时间 <#=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")#> by ding
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using OADemo.Model;
using OADemo.Tool;

namespace OADemo.DAL
{
public partial class <#=tableName+"Dal"#>
{

/// <summary>
/// 添加一条数据
/// </summary>
public bool Insert<#=tableName#>(<#=tableName#> entity)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into <#=tableName#>(");
strSql.Append("<#= DbHelper.GetFileStr(tableName) #>");
strSql.Append(" values (");
strSql.Append("<#= DbHelper.GetParStr(tableName) #>");
strSql.Append(" );");

var newClass =
new {<# bool b=false;foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) {if(!column.IsIdentity) {if (b){ #>, <# } #><#= column.ColumnName #> = entity.<#= column.ColumnName #><# b=true;} #>
<# }#>};

return DapperHelper.Excute(strSql.ToString(), newClass) > 0;
}

/// <summary>
/// 更新一条数据
/// </summary>
public bool Update<#=tableName#>(<#=tableName#> entity)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update <#=tableName#> set ");
<#bool isFirst=true; foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { if(!column.IsIdentity) { #>
<#if (!isFirst){ #>strSql.Append(","); <# } #>
strSql.Append("<#= column.ColumnName #>[email protected]<#= column.ColumnName #>");
<# isFirst=false; }} #>
strSql.Append(" where ");
<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { if(column.IsIdentity) {#>
strSql.Append("<#= column.ColumnName #>[email protected]<#= column.ColumnName #>");
<# }} #>

var newClass =
new {<# bool u=false;foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) {if(!column.IsIdentity) {if (u){ #>, <# } #><#= column.ColumnName #> = entity.<#= column.ColumnName #><# u=true;} #>
<# }#>};
return DapperHelper.Excute(strSql.ToString(), newClass) > 0;
}

/// <summary>
/// 删除一条数据
/// </summary>
public bool Delete<#=tableName#>(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from <#=tableName#> ");
strSql.Append(" where ");
<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { if(column.IsIdentity) {#>
strSql.Append("<#= column.ColumnName #>[email protected]<#= column.ColumnName #>");
<# }} #>

var newClass =
new {
<#foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { if(column.IsIdentity) {#> <#= column.ColumnName #>= id<# break;}} #>
};
return DapperHelper.Excute(strSql.ToString(), newClass) > 0;
}

/// <summary>
/// 批量删除数据
/// </summary>
public bool Delete<#=tableName#>(string idList)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from <#=tableName#> ");
strSql.Append(" where ");
strSql.Append(" <#foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { if(column.IsIdentity) {#><#= column.ColumnName #> <# break;}} #>");
strSql.Append(" in (" + idList + ") ");
return DapperHelper.Excute(strSql.ToString()) > 0;
}

/// <summary>
///根据 主键查询
/// </summary>
public <#=tableName#> SelectOne<#=tableName#>(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 * from <#=tableName#> ");
strSql.Append(" where ");
<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { if(column.IsIdentity) { #>
strSql.Append("<#= column.ColumnName #>[email protected]<#= column.ColumnName #>");
<# }} #>
var newClass = new {
<#foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { if(column.IsIdentity) {#><#= column.ColumnName #>= id<# break;}} #>
};

return DapperHelper.FirstOrDefault<<#=tableName#>>(strSql.ToString(), newClass);

}

/// <summary>
/// 根据条件查询所有实体
/// </summary>
public IEnumerable<<#=tableName#>> Select<#=tableName#>List(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select * ");
strSql.Append(" FROM <#=tableName#> ");
if (strWhere.Trim() != "")
{
strSql.Append(" where " + strWhere);
}

return DapperHelper.Query<<#=tableName#>>(strSql.ToString());

}

/// <summary>
/// 分页获取数据列表
/// </summary>
public IEnumerable<<#=tableName#>> Select<#=tableName#>ListByPage(string strWhere, string orderby, int startIndex, int endIndex)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
if (!string.IsNullOrEmpty(orderby.Trim()))
{
strSql.Append("order by T." + orderby);
}
else
{
strSql.Append("order by T.Id desc");
}
strSql.Append(")AS Row, T.* from <#=tableName#> T ");
if (!string.IsNullOrEmpty(strWhere.Trim()))
{
strSql.Append(" WHERE " + strWhere);
}
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);

return DapperHelper.Query<<#=tableName#>>(strSql.ToString());
}

}
}

<#

manager.EndBlock();
}
manager.Process(true);
#>

BLL

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Data.DataSetExtensions.dll" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\EF.Utility.CS.ttinclude" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\OutputHelper.ttinclude" #>
<#@ include file="D:\代码\OADemo\OADemo.Model\include\DbHelper.ttinclude" #>

<#
var manager = Manager.Create(Host, GenerationEnvironment);
foreach(DbTable dbTable in DbHelper.GetDbTables(config.ConnectionString, config.DbDatabase))
{
string tableName=dbTable.TableName;
manager.StartNewFile(tableName+"Bll.cs");#>
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由T4模板自动生成
// 生成时间 <#=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")#> by ding
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OADemo.DAL;
using OADemo.Model;

namespace OADemo.BLL
{
public partial class <#=tableName#>Business
{

<#=tableName#>Dal dal = new <#=tableName#>Dal();

/// <summary>
/// 添加一条数据
/// </summary>
public bool Add<#=tableName#>(<#=tableName#> entity)
{
return dal.Insert<#=tableName#>(entity);;
}

/// <summary>
/// 更新一条数据
/// </summary>
public bool Modify<#=tableName#>(<#=tableName#> entity)
{
return dal.Update<#=tableName#>(entity);
}

/// <summary>
/// 删除一条数据
/// </summary>
public bool Remove<#=tableName#>(int id)
{
return dal.Delete<#=tableName#>(id);
}

/// <summary>
/// 批量删除数据
/// </summary>
public bool Remove<#=tableName#>(string idList)
{
return dal.Delete<#=tableName#>(idList);
}

/// <summary>
/// 查询一个实体
/// </summary>
public <#=tableName#> GetOne<#=tableName#>(int id)
{
return dal.SelectOne<#=tableName#>(id);
}

/// <summary>
/// 根据条件查询所有实体
/// </summary>
public List<<#=tableName#>> Get<#=tableName#>List(string strWhere)
{
return dal.Select<#=tableName#>List(strWhere).ToList();
}

/// <summary>
/// 分页获取数据列表
/// </summary>
public List<<#=tableName#>> Get<#=tableName#>ListByPage(string strWhere, string orderby, int startIndex, int endIndex)
{
return dal.Select<#=tableName#>ListByPage(strWhere,orderby,startIndex,endIndex).ToList();
}
}
}

<#

manager.EndBlock();
}
manager.Process(true);
#>

时间: 2024-10-13 11:41:33

一个基于DpperHelper的t4模板的相关文章

一个基于DapperHelper的t4三层

Model Model Model <#@ template debug="false" hostspecific="true" language="C#" #><#@ output extension=".cs" #><#@ assembly name="System.Data.DataSetExtensions.dll" #><#@ import namespa

T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll

生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文件,选择[ 运行时文本模版](后缀为 .tt)取个名字点确定. 步骤2 设置当前T4所需要的序集并且引用 SqlSugar.dll 编写连接数据库代码 调用SqlSugar生成实体函数,填写参数. 图片看不清楚看下面代码 <#@ template debug="false" host

二、T4模板

上文带大家见识了下T4,这里呢开始介绍T4模板有关的内容.关于T4模板介绍和使用网上一搜一箩筐,想深入研究的可以自行去找些资料,这里只介绍接下来我们需要使用的一些知识,不会面面俱到的讲T4模板所有的知识.T4模板使用和ASPX文件使用方式近乎类似所以也不需要花太多时间. 打开TT文件,输入如下代码并保存: @ assembly 指明TT模板环境使用的目标程序集 @ import 指明TT模板环境使用的命名空间 @ output 指明TT模板输出格式,包括文件后缀编码方式等 <##>中包含的代码

基于T4模板的文档生成

看了好几个代码自动生成的工具,用起来很方便,但有些方面还是不够自由:这些日子里忙里偷闲摸索了一番,个人觉的基于T4模板的代码生成方案还是不错的. 下面就看看这个T4到底是什么东东-- T4 = Text Template Transformation Toolkit 不知道电脑前的你是否接触过Asp或jsp之类的动态网页编程语言,个人感觉就和那些动态网页的的编写思路差不多只不过那些编译前是*.asp.*.aspx,或*.jsp,这个T4编译前是的扩展名是tt(*.tt) 先看一个简单的tt文件

T4模板的一个问题,用过的麻烦进来看看

博问里面发了几次了,看的人太少了,回答的人更少,而且都没有解决,这次发首页,希望管理手下留情,真心这个问题一个月了,一直没解决掉.高抬贵手 项目生成成功后,右键.tt文件,然后 ,然后调试T4模板成功,就OK了然而每次运行自定义工具,就会报错,应该是Machine config的错误,但是一直不会改,百度的方法也改不好,哪位老司机玩过T4模板的,帮我看看吧,问题截图发下面了 然后改过machine.config里面的内容,一直没改成功,就一直拖到现在

T4模板——一个神奇的代码生成器

利用T4模板,可以很方便的从数据库映射成Model模型,相当于动软等功效.但动软是可以直接生成三层,抽象工厂的,T4没那么牛叉,所以我们一般只用作生成Modle或者Server等指定方法了. 废话少说,切入正题: 下面我将讲解的有两部分,一部分是根据T4将方法属性等生成到一个类里面,另一个是分配生成到不同类里面. 一.根据T4将方法生成到一个类里面 代码如下: Customers.tt <#@ assembly name="System.Core.dll" #> <#

T4模板:T4模板之菜鸟篇

一.废话 T4(Text Template Transformation Toolkit)是微软官方在VisualStudio 2008中开始使用的代码生成引擎.在 Visual Studio 中,"T4 文本模板"是由一些文本块和控制逻辑组成的混合模板,它可以生成文本文件. 在 Visual C# 或 Visual Basic 中,控制逻辑编写为程序代码的片段.生成的文件可以是任何类型的文本,例如网页.资源文件或任何语言的程序源代码.现在的VS中只要与代码生成相关的场景基本上都能找T

[转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

本文转自:http://www.cnblogs.com/guomingfeng/p/mvc-ef-t4.html 〇.目录 一.前言 二.工具准备 三.T4代码生成预热 (一) 单文件生成:HelloWorld.cs (二) 多文件生成 四.生成数据层实体相关相似代码 (一) 生成准备 (二) 生成实体相关相似代码 生成实体映射配置类 生成实体仓储接口 生成实体仓储实现 五.源码获取 系列导航 一.前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少

DataUml Design 教程5-代码模板介绍(甚于T4模板技术)

DataUml Design 代码模板完全基于C#语言来编写的.不懂写模板的可以请教作者,随时欢迎.下面是一段模板代码,这段代码可以获取一个类结构的所有信息. <#@ template language="C#" HostSpecific="True" #> <# NetUmlTemplateCodeHost host = (NetUmlTemplateCodeHost)(Host); #> 命名空间:<#= host.ClassPro