通过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 ...
随机推荐
- HTML的前世今生
HTML的基础知识扫盲 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 三年前,我就听周围的一些工程师说,python就是一个脚本语言,没啥好学的,学JAVA吧,python能干的J ...
- JAVA记录-@Controller和RequestMapping注解代码介绍
1.spring-mvc.xml加入配置 <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <context:component ...
- go函数练习
1.编写程序,在终端输出九九乘法表. package main import ( "fmt" ) func main() { for i := 1; i <= 9; i++ ...
- POJ - 3122 Pie(二分)
http://poj.org/problem?id=3122 题意 主人过生日,m个人来庆生,有n块派,m+1个人(还有主人自己)分,问每个人分到的最大体积的派是多大,PS每 个人所分的派必须是在同一 ...
- mysql中sql语句的常用语句
1:提取公共的sql语句: 2:动态添加----sql语句: 代码: <insert id="test1" parameterType="com.floor.sho ...
- npm webpack工具 (监听压缩等)
压缩.监听变动自动打包,:开发后,js编译压缩及样式去空格等 $ webpack --config XXX.js //url使用另一份配置文件(比如webpack.config2.js)来打包 $ w ...
- [iOS]App上架流程[利用Archive进行上传]
今天给大家带来项目如何上架的教程 准备: 1. 一个开发者账号(需要交过钱的,
- WebStrom直接启动VUE项目
点Run即可启动
- 复选框QCheckBox
复选框一共有三种状态:全选中.半选中和无选中.若一个父选项的子选项全部为选中状态,则该父选项为全选中:若子选项全部为无选中状态,则该父选项为无选中状态:若子选项既有全选中和无选中状态,则该父选项为半选 ...
- POJ1287 Networking【最小生成树】
题意: 给出n个节点,再有m条边,这m条边代表从a节点到b节点电缆的长度,现在要你将所有节点都连起来,并且使长度最小 思路: 这是个标准的最小生成树的问题,用prim的时候需要注意的是他有重边,取边最 ...