通过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 ...
随机推荐
- 关于spring事务
https://www.cnblogs.com/caoyc/p/5632963.html 这一篇博客讲的很清楚,一些参数和事务的概念 在serveice层中 每个方法都要写上关于事务的注解.这两个 ...
- Redis主从加Sentinel模式部署
总体部署 一主二从三哨兵 ip地址分配分别为 主 127.0.0.1:6379 从 127.0.0.1:6389 从 127.0.0.1:6399 哨兵 127.0.0.1:26379 哨兵 127. ...
- writen.c
#include <unistd.h> #include <errno.h> ssize_t writen(int fd, const void *vptr, size_t n ...
- Java EE之分页器设计
由于数据库实训的课程设计,在做项目过程中,需要使项目更加规范的结构和各层间责任分离.无疑地,分页器是其中之一. 1. 本文仅陈述分页器如何实现,关于分页器的其他概念,请自行搜索其他网络资源. 2. 关 ...
- NOIP2018ty记
前置传送门:noip2018前流水账 Day-inf~Day-3 写流水账里了 懒得再写了 Day-2~Day-1 做了些noip的原题 真是奇怪,我天天爱跑步和逛公园都是1A的,结果反而有些普及组的 ...
- ZOC7 for Mac连接CentOS7无法输入中文问题
确定是ZOC7的问题 改为 iTerm2 加 ZSH 能够输入中文了 自己配置profile 慢慢所有的终端都用iTerm2 渐渐放弃ZOC7
- 【Gradle】Gradle环境配置
Windows环境 下载 作者下载的是gradle-4.1-all.zip,下载地址:http://services.gradle.org/distributions 环境配置 GRADLE_HOME ...
- IMU 预积分推导
给 StereoDSO 加 IMU,想直接用 OKVIS 的代码,但是有点看不懂.知乎上郑帆写的文章<四元数矩阵与 so(3) 左右雅可比>提到 OKVIS 的预积分是使用四元数,而预积分 ...
- Java 注解 (Annotation)你可以这样学
注解语法 因为平常开发少见,相信有不少的人员会认为注解的地位不高.其实同 classs 和 interface 一样,注解也属于一种类型.它是在 Java SE 5.0 版本中开始引入的概念. 注解的 ...
- 2017-2018-2 20155303『网络对抗技术』Exp1:PC平台逆向破解
2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解 --------CONTENTS-------- 1. 逆向及Bof基础实践说明 2. 直接修改程序机器指令,改变程序执行流程 3. ...