通过T4模板实现代码自动生成
1:准备.tt模板
using BBFJ.OA.IBLL;
using BBFJ.OA.IDAL;
using BBFJ.OA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BBFJ.OA.BLL
{ public partial class ActionInfoService :BaseService<ActionInfo>,IActionInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.ActionInfoDal;
}
} public partial class DepartmentService :BaseService<Department>,IDepartmentService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.DepartmentDal;
}
} public partial class R_UserInfo_ActionInfoService :BaseService<R_UserInfo_ActionInfo>,IR_UserInfo_ActionInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.R_UserInfo_ActionInfoDal;
}
} public partial class RoleInfoService :BaseService<RoleInfo>,IRoleInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.RoleInfoDal;
}
} public partial class UserInfoService :BaseService<UserInfo>,IUserInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.UserInfoDal;
}
} }
IManager.tt
注意修改.tt模板中的
string inputFile = @"..\\BBFJ.OA.Model\\Model.edmx";
和
using BBFJ.OA.IBLL;
using BBFJ.OA.IDAL;
using BBFJ.OA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BBFJ.OA.BLL
3: 修改原类的属性为部分类 partial
public partial class UserInfoService : BaseService<UserInfo>,IUserInfoService
并注释掉重复内容
using BBFJ.OA.IBLL;
using BBFJ.OA.IDAL;
using BBFJ.OA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BBFJ.OA.BLL
{
public partial class UserInfoService : BaseService<UserInfo>,IUserInfoService
{
//public override void SetCurrentDal()
//{
// //子类拿到父类的CurrentDal属性
// //子类拿到父类的DBSession属性
// CurrentDal = this.CurrentDBSession.UserInfoDal;
//}
#region 02批量删除
public bool DeleteEntities(List<int> list)
{
//拿到父类的DBSession属性,拿到具体的数据操作类,调用查询方法
var userInfoList = this.CurrentDBSession.UserInfoDal.LoadEntities(u=>list.Contains(u.ID));
foreach (var userInfo in userInfoList)
{
this.CurrentDBSession.UserInfoDal.DeleteEntity(userInfo);
}
return this.CurrentDBSession.SaveChanges();
}
#endregion #region 03完成用户信息的搜索
public IQueryable<UserInfo> LoadSearchEntities(Model.Search.UserInfoSearch userInfoSearch,short delFlag)
{
var temp = this.CurrentDBSession.UserInfoDal.LoadEntities(c=>c.DelFlag == delFlag );
//根据用户名搜索
if (!String.IsNullOrEmpty(userInfoSearch.UserName))
{
temp = temp.Where<UserInfo>(u=>u.UName.Contains(userInfoSearch.UserName));
}
if (!String.IsNullOrEmpty(userInfoSearch.UserRemark))
{
temp = temp.Where<UserInfo>(u => u.Remark.Contains(userInfoSearch.UserRemark));
}
userInfoSearch.TotalCount = temp.Count();
return temp.OrderBy<UserInfo, int>(u => u.ID).Skip<UserInfo>((userInfoSearch.PageIndex - ) * userInfoSearch.PageSize).Take<UserInfo>(userInfoSearch.PageSize);
}
#endregion }
}
UserInfoService
4: 常见的错误:
修改方法 public partial class UserInfoService : BaseService<UserInfo>,IUserInfoService 类前加"partial" 关键字
注释到重复方法
最终生成代码
using BBFJ.OA.IBLL;
using BBFJ.OA.IDAL;
using BBFJ.OA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BBFJ.OA.BLL
{ public partial class ActionInfoService :BaseService<ActionInfo>,IActionInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.ActionInfoDal;
}
} public partial class DepartmentService :BaseService<Department>,IDepartmentService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.DepartmentDal;
}
} public partial class R_UserInfo_ActionInfoService :BaseService<R_UserInfo_ActionInfo>,IR_UserInfo_ActionInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.R_UserInfo_ActionInfoDal;
}
} public partial class RoleInfoService :BaseService<RoleInfo>,IRoleInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.RoleInfoDal;
}
} public partial class UserInfoService :BaseService<UserInfo>,IUserInfoService
{ public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.UserInfoDal;
}
} }
自动生成代码
通过T4模板实现代码自动生成的更多相关文章
- 实现一个代码自动生成(一):模板引擎Freemarker
目录 前言 模板引擎FreeMarker 前言 在现在的开发当中,代码生成已经是必不可少的一个功能,每个公司都会有自己的一套定制的项目骨架,而实现代码自动生成,模板引擎是必不可少的,所以在这篇博客中, ...
- 代码自动生成工具MyGeneration之一(程序员必备工具)
代码自动生成工具MyGeneration之一(程序员必备工具) 转 分类: C#2008-08-06 18:12 16064人阅读 评论(12) 收藏 举报 工具数据库相关数据库stringbrows ...
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)
TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ...
- C# 代码自动生成工具
开源:C# 代码自动生成工具,支持站点前后台 前言 写这个项目有很长一段时间了,期间也修修改改,写到最后,自己也没咋用(研究方向变化了). 正文 具体项目开源了:https://github.co ...
- Mybatis代码自动生成(含测试)
一.建立数据库 create database shixun; use shixun; create table user( id int primary key auto_increment , u ...
- MyBatis代码自动生成
MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实 ...
- 代码自动生成工具_java版
项目结构: 这里要实现的功能是,当我们给出了bean,如:Admin,User,People等实体类后, 我想用代码自动生成我想要的代码,最后生成的效果: 也就是说为每一个bean都生成相应的Dao, ...
- mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap【转】
由于mybatis简单易学,比起Hibername来,更容易上手,代码也能自动生成.这几天研究了下代码自动生成的,参考: http://0609xiaohua.iteye.com/blog/14535 ...
- 基于eclipse的mybatis映射代码自动生成的插件
基于eclipse的mybatis映射代码自动生成的插件 分类: JAVA 数据库 工具相关2012-04-29 00:15 2157人阅读 评论(9) 收藏 举报 eclipsegeneratori ...
随机推荐
- sublime 将打字内容放在屏幕中央
在settings user里添加一句: "scroll_past_end": true
- MySQL聚合函数、控制流程函数
[正文] 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设 ...
- POJ - 2828 Buy Tickets(线段树单点更新)
http://poj.org/problem?id=2828 题意 排队买票,依次给出当前人要插队的位置,每个人有个编号,然后问你最后整个的序列是什么? 分析 最后一个人的要插入的位置是确定的,所以逆 ...
- HDU - 3006 The Number of set(状态压缩位运算)
http://acm.hdu.edu.cn/showproblem.php?pid=3006 题意 给定n个集合,每个集合都是由大于等于1小于等于m的数字组成,m最大为14.问由给出的集合可以组成多少 ...
- 流媒体技术学习笔记之(十七)FFmpeg 3.3《希尔伯特》-新版本的亮点
FFmpeg 3.3“Hilbert”,一个新的主要版本的一些亮点: 苹果Pixlet解码器 NewTek SpeedHQ解码器 QDMC音频解码器 PSD(Photoshop Document)解码 ...
- JavaScript 从入门到放弃(一)事件委托和使用innerHTML添加元素
一.使用事件委托 一个简单的需求,比如想给ul下面的li加上点击事件,点击哪个li,就显示那个li的innerHTML.这个貌似很简单!代码如下! <!DOCTYPE html> < ...
- js动态操作DOM
创建一个元素 createElement() 向元素末尾添加一个子节点 appendChild() 将新的元素插入到指定元素的前面 insertBefore(new,old); 删除一个子节点 rem ...
- SQL Server分页进化
DataReader.Dataset 数据量太大就用datareader,dataset都读到内存里了,datareader是直接读取数据库. DataReader是一个快速的只进游标 DataRea ...
- luogu 1314 欧拉回路
欧拉路径:一笔画的路径 欧拉回路:一笔画的回路 两者判断方法一样但是输出略有不同.并且还有Fleury(弗罗莱)算法,但是我不会.. 这里就用dfs就好 判断条件: 1)图的连通性(可用并查集判断) ...
- Hadoop mapreduce执行过程涉及api
资源的申请,分配过程略过,从开始执行开始. mapper阶段: 首先调用默认的PathFilter进行文件过滤,确定哪些输入文件是需要的哪些是不需要的,然后调用inputFormat的getSplit ...