通过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 ...
随机推荐
- filebeat多个key
filebeat.prospectors:- type: log paths: - D:\logs\iis\W3SVC2\*.log exclude_lines: ['^#'] multiline: ...
- Redis模块学习笔记(一)RediSearch简单使用
说明:安装的Redis服务器必须为 4.0 以上版本,通过info命令查看 > INFO redis_version: 一.安装 RediSearch git clone https://git ...
- u-boot移植(五)---代码修改---时钟修改、SDRAM
最开始已经建立了新单板以及配置文件,现在就需要做的是代码的修改,配置成适合目标板使用的u-boot. 一.时钟修改 在代码流程分析中,我们知道,系统的启动是: 设置 CPU 为管理员模式 关闭看门狗 ...
- JavaScript之12306自动刷新车票[待完善]
function refresh(){ var search_btn = document.getElementById("query_ticket"); var result_t ...
- 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)
1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...
- rem,em
任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=16px.那么12px=0.75em,10px=0.625em.为了简化font-size的换算,需要在css中的body选择 ...
- Mybatis进阶学习笔记——动态代理方式开发Dao接口、Dao层(推荐第二种)
1.原始方法开发Dao Dao接口 package cn.sm1234.dao; import java.util.List; import cn.sm1234.domain.Customer; pu ...
- haar特征(转)
转载链接:http://blog.csdn.net/lanxuecc/article/details/52222369 Haar特征 Haar特征原理综述 Haar特征是一种反映图像的灰度变化的,像素 ...
- springboot系列四、配置模板引擎、配置热部署
一.配置模板引擎 在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html ...
- java.sql.SQLException: ORA-28040: 没有匹配的验证协议(12c或者12c rac)
1.plsql可以连接,java程序不能连接,报如下错误: 一直以来用的都是服务器上的Oracle数据库,今天改成连接本地Oracle 12c数据库是出问题了.hibernate连接Oracle12c ...