您的位置:首页 > 编程语言 > C#

从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)

2014-06-17 12:55 453 查看
原文:从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)

  原本关于T4模板原想分5个章节详细解说的,不过因为最近比较忙,也不想将整个系列时间拉得太长,所以就将它们整合在一块了,可能会有很多细节没有讲到,希望大家自己对着代码与模板去研究。

  本章代码量会比较大,基本将Web层要使用到的大部分函数都用模板生成了出来,而模板中的函数,很多也是互相关联调用的。另外在DotNet.Utilities(公共函数项目)中也添加与修改了一些类和函数。

  需要特别说明的是,在逻辑层添加了July大神编写的超强上传类,具体怎么使用功能怎么强大,在后面调用到时会用一个章节详细说明。呵呵......

  1、先了解解决方案中各个新增文件功能,具体的文件对应说明,请查看《数据字典》中的“目录与文件说明”

  这个是各个表对应的逻辑层类,里面是Web层常用的各种函数。Application文件夹是各种公共逻辑层函数类,Systems文件夹是后端系统管理模块常用函数类。以后添加新的文件时,可以按功能或业务进行对应分类存放。

  

#region 保存列表排序
/// <summary>
/// 保存列表排序,如果使用了缓存,保存成功后会清空本表的所有缓存记录,然后重新加载进缓存
/// </summary>
/// <param name="page">当前页面指针</param>
/// <param name="grid1">页面表格</param>
/// <param name="tbxSortId">表格中绑定排序的表单名</param>
/// <param name="sortIdName">排序字段名</param>
/// <returns>更新成功返回true,失败返回false</returns>
public bool UpdateSort(Page page, FineUI.Grid grid1, string tbxSortId, string sortIdName = "SortId")
{
//更新排序
if (CommonBll.UpdateSort(page, grid1, tbxSortId, "Information", sortIdName, "Id"))
{
//判断是否启用缓存
if (CommonBll.IsUseCache())
{
//删除所有缓存
DelAllCache();
//重新载入缓存
GetList();
}

//添加用户操作记录
UseLogBll.GetInstence().Save(page, "{0}更新了Information表排序!");

return true;
}

return false;
}
#endregion

#region 自动排序
/// <summary>自动排序,如果使用了缓存,保存成功后会清空本表的所有缓存记录,然后重新加载进缓存</summary>
/// <param name="page">当前页面指针</param>
/// <param name="strWhere">附加Where : " sid=1 "</param>
/// <param name="isExistsMoreLv">是否存在多级分类,一级时,请使用false,多级使用true,(一级不包括ParentID字段)</param>
/// <param name="pid">父级分类的ParentID</param>
/// <param name="fieldName">字段名:"SortId"</param>
/// <param name="fieldParentId">字段名:"ParentId"</param>
/// <returns>更新成功返回true,失败返回false</returns>
public bool UpdateAutoSort(Page page, string strWhere = "", bool isExistsMoreLv = false, int pid = 0, string fieldName = "SortId", string fieldParentId = "ParentId")
{
//更新排序
if (CommonBll.AutoSort("Id", "Information", strWhere, isExistsMoreLv, pid, fieldName, fieldParentId))
{
//判断是否启用缓存
if (CommonBll.IsUseCache())
{
//删除所有缓存
DelAllCache();
//重新载入缓存
GetList();
}

//添加用户操作记录
UseLogBll.GetInstence().Save(page, "{0}对Information表进行了自动排序操作!");

return true;
}

return false;
}
#endregion


View Code

  保存排序函数是将列表中直接填写的排序直接保存到数据库中

  自动排序函数执行后,会将当前页面所绑定表格的所有记录分级别全部从小到大重新进行排序,比如二级分类原排序值为1、2、5、10、11、12,执行后会变成1、2、3、4、5、6。

  同时会清除缓存,并且添加用户操作记录。

  Web层会将这两个函数进行封装,处理后无需再编写代码,只要添加了对应按键就会自支继承相应功能,减少Web层的重复代码编写

  由于使用了新的工具类库,模板也做了一些修改,代码实现就花了好几天才完成,而直接完成代码后,文章都不知道怎么写才合适了,今天完成后反复看了几遍,都觉得写得差强人意,呵呵......

  除了上面介绍的函数外,还有其他类与模板函数大家自己看吧,有什么问题再发上来大家一起讨论

  4、小结

  写到这里,其实框架的底层结构算是基本完成的,T4模板与SubSonic3.0的结合,产生一个轻量级的开发框架,无论是开发Winform、Web服务还是其他软件,在这个组合下都可以令我们轻松应对,去除了大量的重复编码时间,轻轻松松一键生成我们需要的大部分代码。而模板设计合理的话,应用一些新技术或替换某些功能(比如IIS模板换成Redis模板),Web层基本上不用做什么修改就可以直接使用了。对于数据库添加新表新字段,修改或删除字段操作,也变得很轻松。由于整个设计不存在硬编码,就算有些地方要修改,运行一下编译就能马上知道需要修改那个位置。

点击下载:

T4模板在逻辑层中的应用(三).rar


版权声明:

  本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,[b]否则保留追究法律责任的权利。如有问题,可以通过1654937@qq.com 联系我,非常感谢。[/b]

  发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 ,大家一起探讨。

  更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐