通过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 ...
随机推荐
- linux的一个find命令配合rm删除某天前的文件
语句写法: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前 ...
- 设计模式---单一职责模式之装饰模式(Decorator)
前提:"单一职责"模式 在软件组件的设计中,如果责任划分的不清晰,使用继承,得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任 典型模式(表现 ...
- 学习windows编程 day4 之 映射模式
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- Linux记录-普通用户下执行sudo xxx 找不到命令解决方案
chmod 777 /etc/sudoers vim /etc/sudoers 1.可以使用 secure_path 指令修改 sudoers 中默认的 PATH为你想要的路径.这个指令指定当用户执行 ...
- SpringJMS解析--监听器
消息监听器容器是一个用于查看JMS目标等待消息到达的特殊bean,一旦消息到达它就可以获取到消息,并通过调用onMessage()方法将消息传递给一个MessageListener实现.Spring中 ...
- git常用命令及含义
Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ...
- <algorithm>里的sort函数对结构体排序
题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...
- Android studio 自动导入(全部)包 import
http://blog.csdn.net/buaaroid/article/details/44979629 1 Android studio 只有import单个包的快捷键:Alt+Enter.没有 ...
- Ubuntu18.04下vim的tab缩进设置为4个空格
在/etc/vim/vimrc最后添加如下内容 set ts = 4 set exbandtab set autoindent
- buildroot构建项目(七)--- u-boot 2017.11 适配开发板修改 4 ---- 系统启动初始化之四
设置完寄存器控制器后,则跳出cpu_init_crit,进入_main 函数.即进入crt0.S (arch\arm\lib) 跟着代码流程慢慢走 一.crt0.S 1.1 第一步执行代码 /* 预 ...