自定义模板,空的类(目的是和t4生成的模板分开,以免被覆盖)

ExtensionDAL

<#@ 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
{
//拓展部分类,和自动生成的分开,防止 自己定义的方法被t4覆盖;
public partial class <#=tableName+"Dal"#>
{

}
}

<#

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

ExtensinoBll

<#@ 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
{

}
}

<#

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

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 #>=@<#= 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 #>=@<#= column.ColumnName #>");
<# }} #>

var newClass =
new {<# bool u=false;foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, tableName) ) { 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 #>=@<#= 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 #>=@<#= 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>
/// <param name="strWhere"></param>
/// <returns></returns>
public int GetDataRecord(string strWhere)
{
string sql = "select count(*) from <#=tableName#> where 1 = 1 " + strWhere;
object obj = DapperHelper.ExecuteScalar(sql);
if (obj == null)
{
return 0;
}
return Convert.ToInt32(obj);
}

/// <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.<#=DbHelper.GetPrimaryKey(tableName)#> desc");
}
strSql.Append(")AS Row, T.* from <#=tableName#> T ");
if (!string.IsNullOrEmpty(strWhere.Trim()))
{
strSql.Append(" WHERE 1 = 1  " + 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();
}

public int GetDataRecord(string strWhere)
{
return dal.GetDataRecord(strWhere);
}

/// <summary>
/// 分页获取数据列表
/// </summary>
public List<<#=tableName#>> GetOA_UserListByPage(int pageIndex,int pageSize,string strWhere, string orderby,out int dataRecord,out int pageCount)
{
dataRecord = GetDataRecord(strWhere);
pageCount = (int)Math.Ceiling(dataRecord * 1.0 / pageSize);

if (pageIndex<=0)
{
pageIndex = 1;
}
if (pageIndex>= pageCount)
{
pageIndex = pageCount;
}

int start = (pageIndex - 1) * pageSize + 1;
int end = pageIndex * pageSize;

return dal.Select<#=tableName#>ListByPage(strWhere, orderby, start, end).ToList();
}

}
}

<#

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

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

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

    生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文 ...

  2. 二、T4模板

    上文带大家见识了下T4,这里呢开始介绍T4模板有关的内容.关于T4模板介绍和使用网上一搜一箩筐,想深入研究的可以自行去找些资料,这里只介绍接下来我们需要使用的一些知识,不会面面俱到的讲T4模板所有的知 ...

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

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

  4. [转]发布基于T4模板引擎的代码生成器[Kalman Studio]

    本文转自:http://www.cnblogs.com/lingyun_k/archive/2010/05/08/1730771.html 自己空闲时间写的一个代码生成器,基于T4模板引擎的,也不仅是 ...

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

    利用T4模板,可以很方便的从数据库映射成Model模型,相当于动软等功效.但动软是可以直接生成三层,抽象工厂的,T4没那么牛叉,所以我们一般只用作生成Modle或者Server等指定方法了. 废话少说 ...

  6. 前端基于react,后端基于.net core2.0的开发之路(番外篇) 后端使用T4模板,生成某些类

    1.介绍 因为开发过程中,有部分类是你加一个模型,就需要去改动的,每次加非常的烦,或者有些类,你只用到了他基类的方法,但是你还必须建一个文件才能调用他基类的方法,也很烦. 这个时候,T4就非常有用了. ...

  7. 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。

    快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC.EntityFrameWork.T4模板技术. 产品界面如下图所示: 源码结构: 开放全部源码,如有需要请联系,QQ:1107141 ...

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

    前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...

  9. T4模板

    T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit. T4文本模板,即一种自定义规则的代码生成器.根据业务模型可生成任何形式的文本文件或供程序调 ...

随机推荐

  1. json 多重嵌套反序列化和序列化

    namespace ConsoleApplication1 {     class Program     {         static void Main(string[] args)      ...

  2. JavaFX基础学习之URLConnection

    一个标准的JavaFX文件包含三个部分:主类 . 控制类. 界面设计(XML+CSS) 1,main.java package application; import javafx.applicati ...

  3. yii2.0单文件上传和多文件上传

    yii2文件上传使用到yii2自带的文件上传类UploadFIle,以及对应的模型规则,这里分别介绍单文件上传和多文件上传: yii2单个文件上传: 上传步奏,先创建上传表单模型model(包含验证规 ...

  4. angular.js跨域post解决方案

    跨域,前端开发中经常遇到的问题,AngularJS实现跨域方式类似于Ajax,使用CORS机制. 下面阐述一下AngularJS中使用$http实现跨域请求数据. AngularJS XMLHttpR ...

  5. HTTP状态码含义

    本文内容是在有道云笔记中找到的,已不知复制自何处,抱歉 一些常见的状态代码为:200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器暂时不可用   1xx(临时响应) 用于表 ...

  6. 给Linux添加google搜索命令

    一次面试时,面试官问怎么在终端直接做到在百度搜索自己的名字,当时没回答出来,面试官给了提示,问http协议.答案是说telnet连接www.baidu.com之后GET 昨天偶然看到一篇博客,http ...

  7. Link方式导入java项目

    一.环境说明 我用的是eclipse3.3.2,并安装了myeclipse的插件. 二.工程文件说明 一共三个文件夹: javacode:存放Java源文件,包含多个子文件夹,每个子文件夹表示一个单独 ...

  8. nagios监控mysql主从状态

    看了网上很多mysql主从监控的,大部分都是shell的,就算是python的,也是在python下跑shell语句.我写了一个python的监控脚本,用到了mysqldb这个包.脚本如下: [roo ...

  9. PRG(Post/Redirect/Get)

    转自:PRG(Post/Redirect/Get) 摘要: Post/Redirect/Get 简称PRG,是一种用来防止表单重复提交数据的一种Web设计模式 Post/Redirect/Get 简称 ...

  10. 【Sort】HeapSort

    堆排序,时间复杂度O(N log N),实际使用中慢于使用Sedgewick增量的增量排序. 大致思路: 1.先在数组中建堆,如果是增量排序,则需要建一个大堆 2.每循环一次,把最大的数,也就是num ...