效果如图,demo(点击demo可下载案例)

项目结构如图

T4BLL添加BLL.tt文件;

T4Model添加Model文件;

T4DAL添加DAL.tt文件;

T4DAL 添加ADO.NET Entity Data Model选择dababase first 模式;

打开Model1.edmx文件下的Model1.tt打开,复制内容替换了T4Model项目下Model.tt文件;

打开Model1.edmx文件下的Model.tt从{ 开始选择至 }

如下图

复制Model1.tt内容替换BLL.tt、DAL.tt内容,现在Model1.tt已经没有什么意义了,可以删除。

打开T4Model的T4模板,修改如下代码,修改完成后保存下就可以生成出Edmx中添加类的Model。

const string inputFile = @"Model1.edmx";

//更改为

string inputFile = Host.ResolveAssemblyReference("$(ProjectDir)").Replace("T4Model","T4DAL")+"/Model1.edmx";

打开T4DAL的T4模板

fileManager.StartNewFile(entity.Name + ".cs");

//更改为

fileManager.StartNewFile(entity.Name + "_DAL.cs");

//---分割线---

public string EntityClassOpening(EntityType entity)

{

return string.Format(

CultureInfo.InvariantCulture,

"{0} {1}partial class {2}{3}",

Accessibility.ForType(entity),

_code.SpaceAfter(_code.AbstractOption(entity)),

_code.Escape(entity),

_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));

}

//更改为

public string EntityClassOpening(EntityType entity)

{

return string.Format(

CultureInfo.InvariantCulture,

"{0} {1}partial class {2}_DAL{3}",

Accessibility.ForType(entity),

_code.SpaceAfter(_code.AbstractOption(entity)),

_code.Escape(entity),

_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));

}

//---分割线---更改为

foreach (var entity in typeMapper.GetItemsToGenerate(itemCollection))

{

fileManager.StartNewFile(entity.Name + "_DAL.cs");

BeginNamespace(code);

#>

using T4Model;

{

///

/// 新增

///

///

///

public Add( entity){

//内容实现

return null;

}

}

EndNamespace(code);

}

打开T4BLL的T4模板

const string inputFile = @"Model1.edmx";

//更改为

string inputFile = Host.ResolveAssemblyReference("$(ProjectDir)").Replace("T4BLL","T4DAL")+"/Model1.edmx";

//---分割线---

fileManager.StartNewFile(entity.Name + ".cs");

//更改为

fileManager.StartNewFile(entity.Name + "_BLL.cs");

//---分割线---

public string EntityClassOpening(EntityType entity)

{

return string.Format(

CultureInfo.InvariantCulture,

"{0} {1}partial class {2}{3}",

Accessibility.ForType(entity),

_code.SpaceAfter(_code.AbstractOption(entity)),

_code.Escape(entity),

_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));

}

//更改为

public string EntityClassOpening(EntityType entity)

{

return string.Format(

CultureInfo.InvariantCulture,

"{0} {1}partial class {2}_BLL{3}",

Accessibility.ForType(entity),

_code.SpaceAfter(_code.AbstractOption(entity)),

_code.Escape(entity),

_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));

}

//---分割线---更为

foreach (var entity in typeMapper.GetItemsToGenerate(itemCollection))

{

fileManager.StartNewFile(entity.Name + "_BLL.cs");

BeginNamespace(code);

#>

using T4DAL;

using T4Model;

{

_DAL dal = new _DAL();

///

/// 新增

///

///

///

public Add( entity){

return dal.Add(entity);

}

}

EndNamespace(code);

}

Host.ResolveAssemblyReference("$(ProjectDir)")是获取项目路径的方法,通过替换项目名称来寻找到edmx文件,从而实现T4模板分离在不同的类库中。

使用T4模板生成代码的学习

之前做项目使用的都是Db First,直接在项目中添加Entity Framework,使用T4模板(T4模板引擎之基础入门)生成DAL BLL层等(T4模板是一个同事给的,也没有仔细研究,代码如下: ...

T4模板生成代码。 数据实体层与数据仓储层。备注

文件生成模板:TempleteManager.ttinclude

通过T4模板实现代码自动生成

1:准备.tt模板 using BBFJ.OA.IBLL; using BBFJ.OA.IDAL; using BBFJ.OA.Model; using System; using System.Co ...

EF t4模板将实体与DBContext分离

在用EF DBFirst时,实体类是从数据库自动生成的,与DBContext放在同一个项目中.这样其他项目想引用实体,就会将数据库操作类暴露出来.所以,我们需要将实体分离. 新建项目EFAccess, ...

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

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

从零开始编写自己的C#框架(12)——T4模板在逻辑层中的应用(一)(附源码)

对于T4模板很多朋友都不太熟悉,它在项目开发中,会帮我们减轻很大的工作量,提升我们的开发效率,减少出错概率.所以学好T4模板的应用,对于开发人员来说是非常重要的. 园子里对于T4模板的介绍与资料已经太 ...

SqlSugar框架T4模板的使用

一.T4模板说明 1.T4模板是用来生成Model层实体类的 2.文件后缀为.tt 3.需要修改配置主要有:引用的SqlSugar.dll的位置.生成实体类的位置及生成实体类的命名空间 4.T4模板生 ...

解决T4模板的程序集引用的五种方案

在众多.NET应用下的代码生成方案中,比如CodeDOM,BuildProvider, 我觉得T4是最好的一种.关于T4的基本概念和模板结果,可以参考我的文章.如 ...

C# 通过T4自动生成代码

通过T4模板生成代码,运行时实现 关键代码段:Host using Microsoft.VisualStudio.TextTemplating; using System; using System. ...

随机推荐

HDU 2509 Nim博弈变形

1.HDU 2509  2.题意:n堆苹果,两个人轮流,每次从一堆中取连续的多个,至少取一个,最后取光者败. 3.总结:Nim博弈的变形,还是不知道怎么分析,,,,看了大牛的博客. 传送门 首先给出结 ...

iOS百度地图SDK集成详细步骤

1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本  ...

Linux安装Memcached服务

环境: CentOS 6.4 libevent-1.4.14b-stable memcached-1.4.21 查看是否安装libevent[root@localhost ~]# rpm -qa |g ...

Ajax技术详解

Ajax技术:Ajax描述了一种主要使用脚本(JS)操纵HTTP的web应用架构,它的主要特点是使用脚本操纵HTTP和web服务器进行数据交换,不会导致页面重载.Ajax的核心是JS的XMLHttpR ...

js 写成类的形式 js 静态变量 js方法 属性 json类

function ClassStudentList() { //[{"Cid":"0d","Students":[{"Sid&qu ...

IOS中对于一些控件的抖动效果

这两天在网上看到一个帖子讨论关于有些app 输入账密时候 错误的话会有抖动效果出现,然后自己琢磨了下如何实现,下面上代码!!! 首先 写一个UIView的分类 #import

纯CSS实现table表头固定(自创备忘)

因为之前约定时候产品没说要表头固定,这次迭代测试突然提出这个需求,而且不知道因为什么未知原因非要这样不可--因为之前用了table标签做表单,而且也没用插件,这下就难了点,找另外一个前端前辈妹子商量了 ...

学习笔记TF042:TF.Learn、分布式Estimator、深度学习Estimator

TF.Learn,TensorFlow重要模块,各种类型深度学习及流行机器学习算法.TensorFlow官方Scikit Flow项目迁移,谷歌员工Illia Polosukhin.唐源发起.Scik ...

【转】web.xml不同版本的头

web.xml v2.3 <?xml version="1.0" encoding="ISO-8859-1"?> ..

Java精选笔记&lowbar;Java API

String类 String类的初始化 String是一个特殊的对象,一旦被初始化,就不会被改变 1.使用字符串常量直接初始化一个String对象 String  s1="abc" ...

t4b代码生成_Ef+T4模板实现代码快速生成器相关推荐

  1. 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]

    在<上篇>中我们通过T4模板为我们指定的数据表成功生成了我们需要的用于添加.修改和删除操作的存储过程.但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板.如果 ...

  2. C#代码生成之T4模板组成

    我们在使用T4模板进行C#代码生成_C#_黄腾霄的博客-CSDN博客介绍了C#使用T4模板生成代码. 今天给大家详细介绍下T4模板的组成 T4模板的组成部分 T4模板的组成部分如图所示.主要由文本部分 ...

  3. 创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]

    在<基于T4的代码生成方式>中,我对T4模板的组成结构.语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码.为了让由此需求的读者对T4 ...

  4. tt c mysql t4 bll_通过T4模板实现代码自动生成

    1:准备.tt模板 usingBBFJ.OA.IBLL;usingBBFJ.OA.IDAL;usingBBFJ.OA.Model;usingSystem;usingSystem.Collections ...

  5. [转]使用T4模板批量生成代码

    本文转自:http://www.cnblogs.com/K_tommy/archive/2013/04/06/T4.html 前言 之前在 "使用T4模板生成代码 - 初探" 文章 ...

  6. 黄聪:C#代码生成工具:文本模板初体验 Hello,World!

    C#代码生成工具:文本模板初体验 Hello World 在VS中的文本模板(也称T4),它给我有点CodeSmith的感觉,也是通过模板加逻辑代码混编批量生成代码的方法,但是关于T4的资料不多,而且 ...

  7. T4模板:MVC中用T4模板快速生成代码

    T4模板快速生成代码: 以快速生Dal文件为例,下面为T4模板文件的内容 <#@ template debug="false" hostspecific="true ...

  8. t4b代码生成_用T4模板实现简单的代码生成器

    最近想在项目中使用一个代码生成器,用T4模板实现了,还是蛮方便的.关于T4模板的介绍可以看下园中相关系列文章T4的介绍,创建运行时模板.里面介绍蛮详细的. 代码生成器界面如下,比较简单,我这里是通过传 ...

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

    本文转自:http://www.cnblogs.com/guomingfeng/p/mvc-ef-t4.html 〇.目录 一.前言 二.工具准备 三.T4代码生成预热 (一) 单文件生成:Hello ...

最新文章

  1. java 无限级_JAVA+Hibernate 无限级分类
  2. p8大佬告诉你JSR - 133 都解决了哪些问题?
  3. lombok中的@Data注解与MyBatis的懒加载机制冲突解决
  4. centos who命令 查看当前登录系统用户信息
  5. Ubuntu桌面培训(Ubuntu Desktop Course)中文译本发布
  6. Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
  7. IntelliJ IDEA中的神仙插件
  8. H3C 环路避免机制六:触发更新
  9. 商汤押注AI教育,成立“商汤教育”子品牌
  10. Android7.1取消wifi图标叉号
  11. MVC 发布到 windows2003遇到 'System.Web.WebPages.Razor 错误提示
  12. 用文本文档写的代码怎么运行?
  13. 3.15PMP试题每日一题
  14. 个人账目管理系统oracle,个人账务管理系统(论文).doc
  15. linux vi编辑器常用命令
  16. JSONObject.fromObject() Maven依赖
  17. centerOS环境变量配置
  18. R语言数据分析笔记——Cohort 存留分析
  19. 什么使格瓦拉风行至今
  20. 中医文化 —— 穴位

热门文章

  1. 王者荣耀无限火力服务器,王者荣耀无限火力
  2. Python入门01:如何在 Chrome 浏览器轻松抓包
  3. JavaSE(基础篇)——面向对象(万字总结)
  4. 揭秘移动支付私有化部署的骗局
  5. 51单片机控制LED灯
  6. Ubuntu 16.04 ,压缩/解压缩RAR文件
  7. 发现了一款很好用的分析SQL脚本数据流关系的工具SQLFlow
  8. 标称数据/数值数据的相关性检验:X方和pearson系数(协方差)
  9. python 之字典及生成字典
  10. python批量识别图片中文字_Python识别图片中的文字