自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考
2011-02-04 10:22
971 查看
最近受到 单程列车 http://www.cnblogs.com/zhaojingjing/ 的启发,让我做一个模板文件来生成代码,效果会很好,我就接纳了人家善意的提醒,周六晚上就改进了一下代码生成器,折腾了一个多小时,一个简易的按模板替换的代码生成器功能实现好了,非常简单好用,现在分享给大家。
模板文件里用了 namespace #Company#.#Project#.Service, #?# 进行替换的思路,设置了文本模板文件,然后用代码生成器进行后台的代码,方便高效一些,代码质量也有保障一些。读取文件的功能函数参考如下:
string file = Application.StartupPath + "\\Templates\\IService.txt";
string code = GetTemplate(file);
code = ReplaceTemplate(code);
this.txtCode.SettxtContent("c#", code); private string GetTemplate(string file)
{
string code = string.Empty;
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using (StreamReader streamReader = new StreamReader(fileStream, Encoding.Default))
{
code = streamReader.ReadToEnd();
}
return code;
}
模板文件的替换参考如下:
private string ReplaceTemplate(string code)
{
code = code.Replace("#Author#", this.txtAuthor.Text);
code = code.Replace("#ClassName#", this.txtClassName.Text);
code = code.Replace("#Code#", this.txtCode.Text);
code = code.Replace("#Company#", this.txtCompany.Text);
code = code.Replace("#DateCreated#", this.txtDateCreated.Text);
code = code.Replace("#Project#", this.txtProject.Text);
code = code.Replace("#YearCreated#", this.txtYearCreated.Text);
return code;
}
程序的运行效果如下:
按模板生成的代码主要功能部分是这2个按钮:
按模板替换的只要有以下2个模板文件,模板文件以文本的方式存了代码文件。
服务程序接口模板文件的参考如下: IService.txt
代码//------------------------------------------------------------
// All Rights Reserved , Copyright (C) #YearCreated# , #Company# , Ltd.
//------------------------------------------------------------
using System.Data;
using System.ServiceModel;
using System.Collections.Generic;
namespace #Company#.#Project#.IService
{
using DotNet.Model;
using DotNet.Utilities;
/// <summary>
/// I#ClassName#Service
/// 服务层接口
///
/// 修改纪录
///
/// #DateCreated# 版本:1.0 #Author# 创建文件。
///
/// 版本:1.0
///
/// <author>
/// <name>#Author#</name>
/// <date>#DateCreated#</date>
/// </author>
/// </summary>
[ServiceContract]
public interface I#ClassName#Service
{
/// <summary>
/// 添加实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>主键</returns>
[OperationContract]
string Add(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage);
/// <summary>
/// 获取列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <returns>数据表</returns>
[OperationContract]
DataTable GetDT(BaseUserInfo userInfo);
/// <summary>
/// 获取实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>实体</returns>
[OperationContract]
#ClassName#Entity GetEntity(BaseUserInfo userInfo, string id);
/// <summary>
/// 编辑
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>影响行数</returns>
[OperationContract]
int Update(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage);
/// <summary>
/// 获取数据列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键</param>
/// <returns>数据表</returns>
[OperationContract]
DataTable GetDTByIds(BaseUserInfo userInfo, string[] ids);
/// <summary>
/// 批量保存
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entites">实体列表</param>
/// <returns>影响行数</returns>
[OperationContract]
int BatchSave(BaseUserInfo userInfo, List<#ClassName#Entity> entites);
/// <summary>
/// 删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>数据表</returns>
[OperationContract]
int Delete(BaseUserInfo userInfo, string id);
/// <summary>
/// 批量删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
[OperationContract]
int BatchDelete(BaseUserInfo userInfo, string[] ids);
/// <summary>
/// 批量做删除标志
/// </summary>
/// <param name="userInfo">用户</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
[OperationContract]
int SetDeleted(BaseUserInfo userInfo, string[] ids);
}
}
服务程序模板文件的参考如下:Service.txt
代码//------------------------------------------------------------
// All Rights Reserved , Copyright (C) #YearCreated# , #Company# , Ltd.
//------------------------------------------------------------
using System;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
namespace #Company#.#Project#.Service
{
using DotNet.Business;
using DotNet.DbUtilities;
using DotNet.Model;
using DotNet.Utilities;
using DotNet.IService;
/// <summary>
/// #ClassName#Service
/// 服务层
///
/// 修改纪录
///
/// #DateCreated# 版本:1.0 #Author# 创建文件。
///
/// 版本:1.0
///
/// <author>
/// <name>#Author#</name>
/// <date>#DateCreated#</date>
/// </author>
/// </summary>
public class #ClassName#Service : System.MarshalByRefObject, I#ClassName#Service
{
/// <summary>
/// 业务数据库连接
/// </summary>
private readonly string BusinessDbConnection = BaseSystemInfo.BusinessDbConnection;
/// <summary>
/// 添加实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>主键</returns>
public string Add(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
string returnValue = string.Empty;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.AddEntity(entity);
// returnValue = manager.Add(entity, out statusCode);
statusMessage = manager.GetStateMessage(statusCode);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <returns>数据表</returns>
public DataTable GetDT(BaseUserInfo userInfo)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
DataTable dataTable = new DataTable(#ClassName#Table.TableName);
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
// 获得列表
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
dataTable = manager.GetDT(#ClassName#Table.FieldDeletionStateCode, 0, #ClassName#Table.FieldSortCode);
dataTable.TableName = #ClassName#Table.TableName;
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return dataTable;
}
/// <summary>
/// 获取实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>实体</returns>
public #ClassName#Entity GetEntity(BaseUserInfo userInfo, string id)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
#ClassName#Entity entity = null;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
entity = manager.GetEntity(id);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return entity;
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>影响行数</returns>
public int Update(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.UpdateEntity(entity);
// returnValue = manager.Update(entity, out statusCode);
statusMessage = manager.GetStateMessage(statusCode);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 获取数据列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键</param>
/// <returns>数据表</returns>
public DataTable GetDTByIds(BaseUserInfo userInfo, string[] ids)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
DataTable dataTable = new DataTable(#ClassName#Table.TableName);
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
dataTable = manager.GetDT(#ClassName#Table.FieldId, ids, #ClassName#Table.FieldSortCode);
dataTable.TableName = #ClassName#Table.TableName;
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return dataTable;
}
/// <summary>
/// 批量保存
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entites">实体列表</param>
/// <returns>影响行数</returns>
public int BatchSave(BaseUserInfo userInfo, List<#ClassName#Entity> entites)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
// returnValue = manager.BatchSave(entites);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>数据表</returns>
public int Delete(BaseUserInfo userInfo, string id)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.Delete(id);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
public int BatchDelete(BaseUserInfo userInfo, string[] ids)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
// 开始数据库事务
dbHelper.BeginTransaction();
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.BatchDelete(ids);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
// 递交数据库事务
dbHelper.CommitTransaction();
}
catch (Exception ex)
{
// 撤销数据库事务
dbHelper.RollbackTransaction();
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 批量做删除标志
/// </summary>
/// <param name="userInfo">用户</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
public int SetDeleted(BaseUserInfo userInfo, string[] ids)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.SetDeleted(ids);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
}
}
模板文件里用了 namespace #Company#.#Project#.Service, #?# 进行替换的思路,设置了文本模板文件,然后用代码生成器进行后台的代码,方便高效一些,代码质量也有保障一些。读取文件的功能函数参考如下:
string file = Application.StartupPath + "\\Templates\\IService.txt";
string code = GetTemplate(file);
code = ReplaceTemplate(code);
this.txtCode.SettxtContent("c#", code); private string GetTemplate(string file)
{
string code = string.Empty;
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using (StreamReader streamReader = new StreamReader(fileStream, Encoding.Default))
{
code = streamReader.ReadToEnd();
}
return code;
}
模板文件的替换参考如下:
private string ReplaceTemplate(string code)
{
code = code.Replace("#Author#", this.txtAuthor.Text);
code = code.Replace("#ClassName#", this.txtClassName.Text);
code = code.Replace("#Code#", this.txtCode.Text);
code = code.Replace("#Company#", this.txtCompany.Text);
code = code.Replace("#DateCreated#", this.txtDateCreated.Text);
code = code.Replace("#Project#", this.txtProject.Text);
code = code.Replace("#YearCreated#", this.txtYearCreated.Text);
return code;
}
程序的运行效果如下:
按模板生成的代码主要功能部分是这2个按钮:
按模板替换的只要有以下2个模板文件,模板文件以文本的方式存了代码文件。
服务程序接口模板文件的参考如下: IService.txt
代码//------------------------------------------------------------
// All Rights Reserved , Copyright (C) #YearCreated# , #Company# , Ltd.
//------------------------------------------------------------
using System.Data;
using System.ServiceModel;
using System.Collections.Generic;
namespace #Company#.#Project#.IService
{
using DotNet.Model;
using DotNet.Utilities;
/// <summary>
/// I#ClassName#Service
/// 服务层接口
///
/// 修改纪录
///
/// #DateCreated# 版本:1.0 #Author# 创建文件。
///
/// 版本:1.0
///
/// <author>
/// <name>#Author#</name>
/// <date>#DateCreated#</date>
/// </author>
/// </summary>
[ServiceContract]
public interface I#ClassName#Service
{
/// <summary>
/// 添加实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>主键</returns>
[OperationContract]
string Add(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage);
/// <summary>
/// 获取列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <returns>数据表</returns>
[OperationContract]
DataTable GetDT(BaseUserInfo userInfo);
/// <summary>
/// 获取实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>实体</returns>
[OperationContract]
#ClassName#Entity GetEntity(BaseUserInfo userInfo, string id);
/// <summary>
/// 编辑
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>影响行数</returns>
[OperationContract]
int Update(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage);
/// <summary>
/// 获取数据列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键</param>
/// <returns>数据表</returns>
[OperationContract]
DataTable GetDTByIds(BaseUserInfo userInfo, string[] ids);
/// <summary>
/// 批量保存
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entites">实体列表</param>
/// <returns>影响行数</returns>
[OperationContract]
int BatchSave(BaseUserInfo userInfo, List<#ClassName#Entity> entites);
/// <summary>
/// 删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>数据表</returns>
[OperationContract]
int Delete(BaseUserInfo userInfo, string id);
/// <summary>
/// 批量删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
[OperationContract]
int BatchDelete(BaseUserInfo userInfo, string[] ids);
/// <summary>
/// 批量做删除标志
/// </summary>
/// <param name="userInfo">用户</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
[OperationContract]
int SetDeleted(BaseUserInfo userInfo, string[] ids);
}
}
服务程序模板文件的参考如下:Service.txt
代码//------------------------------------------------------------
// All Rights Reserved , Copyright (C) #YearCreated# , #Company# , Ltd.
//------------------------------------------------------------
using System;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
namespace #Company#.#Project#.Service
{
using DotNet.Business;
using DotNet.DbUtilities;
using DotNet.Model;
using DotNet.Utilities;
using DotNet.IService;
/// <summary>
/// #ClassName#Service
/// 服务层
///
/// 修改纪录
///
/// #DateCreated# 版本:1.0 #Author# 创建文件。
///
/// 版本:1.0
///
/// <author>
/// <name>#Author#</name>
/// <date>#DateCreated#</date>
/// </author>
/// </summary>
public class #ClassName#Service : System.MarshalByRefObject, I#ClassName#Service
{
/// <summary>
/// 业务数据库连接
/// </summary>
private readonly string BusinessDbConnection = BaseSystemInfo.BusinessDbConnection;
/// <summary>
/// 添加实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>主键</returns>
public string Add(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
string returnValue = string.Empty;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.AddEntity(entity);
// returnValue = manager.Add(entity, out statusCode);
statusMessage = manager.GetStateMessage(statusCode);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <returns>数据表</returns>
public DataTable GetDT(BaseUserInfo userInfo)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
DataTable dataTable = new DataTable(#ClassName#Table.TableName);
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
// 获得列表
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
dataTable = manager.GetDT(#ClassName#Table.FieldDeletionStateCode, 0, #ClassName#Table.FieldSortCode);
dataTable.TableName = #ClassName#Table.TableName;
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return dataTable;
}
/// <summary>
/// 获取实体
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>实体</returns>
public #ClassName#Entity GetEntity(BaseUserInfo userInfo, string id)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
#ClassName#Entity entity = null;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
entity = manager.GetEntity(id);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return entity;
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entity">实体</param>
/// <param name="statusCode">返回状态码</param>
/// <param name="statusMessage">返回状态信息</param>
/// <returns>影响行数</returns>
public int Update(BaseUserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.UpdateEntity(entity);
// returnValue = manager.Update(entity, out statusCode);
statusMessage = manager.GetStateMessage(statusCode);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 获取数据列表
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键</param>
/// <returns>数据表</returns>
public DataTable GetDTByIds(BaseUserInfo userInfo, string[] ids)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
DataTable dataTable = new DataTable(#ClassName#Table.TableName);
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
dataTable = manager.GetDT(#ClassName#Table.FieldId, ids, #ClassName#Table.FieldSortCode);
dataTable.TableName = #ClassName#Table.TableName;
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return dataTable;
}
/// <summary>
/// 批量保存
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="entites">实体列表</param>
/// <returns>影响行数</returns>
public int BatchSave(BaseUserInfo userInfo, List<#ClassName#Entity> entites)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
// returnValue = manager.BatchSave(entites);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="id">主键</param>
/// <returns>数据表</returns>
public int Delete(BaseUserInfo userInfo, string id)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.Delete(id);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="userInfo">操作员</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
public int BatchDelete(BaseUserInfo userInfo, string[] ids)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
// 开始数据库事务
dbHelper.BeginTransaction();
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.BatchDelete(ids);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
// 递交数据库事务
dbHelper.CommitTransaction();
}
catch (Exception ex)
{
// 撤销数据库事务
dbHelper.RollbackTransaction();
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
/// <summary>
/// 批量做删除标志
/// </summary>
/// <param name="userInfo">用户</param>
/// <param name="ids">主键数组</param>
/// <returns>影响行数</returns>
public int SetDeleted(BaseUserInfo userInfo, string[] ids)
{
// 写入调试信息
#if (DEBUG)
int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
#endif
int returnValue = 0;
IDbHelper dbHelper = DbHelperFactory.GetHelper();
try
{
dbHelper.Open(BusinessDbConnection);
#ClassName#Manager manager = new #ClassName#Manager(dbHelper, userInfo);
returnValue = manager.SetDeleted(ids);
BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
}
catch (Exception ex)
{
BaseExceptionManager.LogException(dbHelper, userInfo, ex);
throw ex;
}
finally
{
dbHelper.Close();
}
// 写入调试信息
#if (DEBUG)
BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
#endif
return returnValue;
}
}
}
相关文章推荐
- 自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考
- 自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考
- Enterprise Solution 生成实体数据访问接口与实现类型 Code Smith 6.5 模板文件下载
- Android(java)学习笔记229:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)
- 自己写一个ORM框架-实现生成javabean文件--也是一个代码生成器的实现
- WSDL2Java通过WSDL文件生成java服务接口并实现
- 利用HTTP协议实现Android文件上传至WEB服务器,采用PHP接收文件(参考网上自己实现)
- webservice学习 由服务接口代码生成wsdl文件
- 【自己动手写类加载器1】实现加密功能:生成加密class文件,复制到bin目录下,AppClassLoader加载出错
- asp.net生成缩略图并支持文件上传实现代码
- Linux下按照时间和大小生成新文件的程序流程及其C代码实现
- 实现自己的脚本语言ngscript之四:代码生成
- 用代码可以实现把jpg,png文件生成mbm文件
- 自己动手实现jQuery Callbacks完整功能代码详解
- 用类的继承关系(重写父类的方法)实现简易后台代码模板
- SQL Server中采用BULK INSERT实现大数据量文本文件批量导入
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- VS2010生成代码文件注释模板
- 配置实现-自创html生成模板搭配xml获取数据无需写代码实现静态网站
- react-native-fs实现文件下载、文本存储的示例代码