SubSonic3.0 Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率
应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助。大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会抽时间进行处理的,如果支持我写的文章,也请登陆我的博客推荐一下,有你的支持,我会更有动力。
本Demo使用了T4模版,可以通过模版的应用达到快速开发目的,在我实际的项目当中,可减少70%以上的代码量(计算方面的代码都放在了逻辑层,而逻辑层代码绝大部分都是直接生成)以及80%以上的出错率(程序员平常最多的出错是在机械式的复制与粘贴操作后产生的视觉疲劳,由于没有将复制后的所有相关名称进行修改引起的错误)
================================================================
名 称:SubSonic3.0 Demo
版 本:1.0
最后更新:2013-9-13
作 者:Empty(AllEmpty)
Email: 1654937@qq.com
学习讨论:SubSonic3.0学习群(327360708)
相关博客:http://www.cnblogs.com/EmptyFS/
================================================================
开发环境:
Vs2010 + SubSonic3.0.0.4.2 + ExtAspNet3.1.9.2
本Demo只是简单的实现了登陆、管理员表的查询以及管理员记录的添加、删除、修改、改变状态功能
底层使用SubSonic3.0.0.4.2插件 + T4模版生成
逻辑层使用T4模版生成将开发过程中所需要的各种调用函数,在实际项目中,使用本方式开发的框架,代码开发量减少了70%以上,出错率也将减到最低。程序员只需要简单的复制+粘贴,然后修改一些UI就可以完成网站后台管理系统或企业类管理软件的功能开发,只需要在小部分需要使用一些逻辑处理的页面中实现一些逻辑处理就可以了,大大减轻了项目开发的工作量,提高开发效率。
本Demo只是实现了简单的功能,并没有详细将管理系统的各种功能实现出来,只是通过本Demo提供了一种快速开发的思想,大家可以深入研究后自由发挥各自的想象与需要,去实现出来。
Demo中各级目录与文件的说明,请查看附件中的数据字典,里面有详细的说明。
项目中的Text.aspx.cs文件是SubSonic3.0的各种使用例子,如果大家对SubSonic3.0不熟悉的话,可以将它设为启动项,启动DeBug调试方法,逐行调试查看,就知道怎么使用了,里面包含了插件各种常用的调用方式。
另外还要重点说明一下的是DataAccess/SubSonic/EntityTable.tt生成的EntityTable.cs文件,这个文件直接生成数据表名与及相关字段名,可直接使用DataAccess.DataModel.T + Table(如ManagerTable.TableName可获取表名...)获取数据表名称与各个字段名称,使用这种方式可以减少代码中的硬编码,这样在修改数据库字段或内容时,VS就会直接报错,让我们可以马上知道要修改那几个地方,减少出错的可能。
Login项目中的SubSonic/CreateBll.tt模版主要用于生成各种逻辑类,在<#
foreach(var col in tbl.Columns){
if (col.SysType == "byte")
{
#>
和
<#
}
}
#>
#endregion 模版生成函数
如图:
之间放的是根据字段名标识不同,对应生成不同的方法。
生成后的逻辑类内容,如图
大家在实现使用中,可以通过定义不同的字段名给程序甄别而生成你所需要的函数,这样就会大大减轻开发中的工作量,另外使用生成功能,可以避免开发过程中,由于机械式的复制与粘贴产生的视觉疲劳,没有修改相关名称引起的错误。由于生成的逻辑类使用了partial这个类修饰符,所以我们还可以定义同名的逻辑类,里面放那些不能用模版来生成的方法,这样生成与自定义的方法分开两个文件处理,就不用有修改后要花大量时间进行复制粘贴修改相关类了。
最后需要指出的是SubSonic3.0插件目前不支持括号嵌套功能,有双层括号时会给解释成多个单括号,甚至出错,所以大家添加查询条件时要注意这一点,等以后有时间再研究一下代码,看能否加上括号嵌套功能。还有使用In查询时,插件也不能很好的进行解释,所以我封装了ConditionHelper.cs条件类,将In查询转换为多个Or关系的等于查询语句,在使用时也有一些讲究的,具体请查看Test.aspx.cs中的例子。
下载地址:http://yunpan.cn/QGFA6U8p8cz4M 密码:e701
下载地址于2013-09-13 15:56重新更新了,修改了查询条件封装类(SqlqueryCondition.cs)的一个小Bug
本文章为原创内容,转载请保留下面信息。
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:SubSonic3.0学习群(327360708)或Email给我(1654937#qq.com),大家一起探讨,由于本人工作很繁忙,如果疑问请先留言,回复不及时也请谅解。
想了解更多SubSonic3.0的相关问题,请观注博客:http://www.cnblogs.com/EmptyFS/
SubSonic3.0 Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率的更多相关文章
- no main manifest attribute, in demo-1.0.jar
今天想打包一个jar到Linux上运行,发现使用java -jar demo-1.0.jar 运行报错: no main manifest attribute, in demo-1.0.jar 解决方 ...
- NX11.0和VS2013 创建NXOpen 开发模版失败解决方案【转载】
转载自PLM之家论坛 NX11.0和VS2013 创建NXOpen 开发模版失败解决方案 首先我觉得这个可能是西门子疏忽,基本上每个大版本没有补丁前都有类似问题,下面来说说怎么解决吧.注意这里版本,N ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
系列目录 本节不再适合本系统,在58,59节已经重构.请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的地址了.演示地址 之前我们发布了一个简单的代码生成器,其原理就是读取数据库的表结 ...
- EF架构~在T4模版中为所有属性加默认值
回到目录 在项目开发过程中,出现了一个问题,就是新添加一个非空字段后,原来的程序逻辑需要被重新修改,即将原来的字段添加到程序里,这种作法是非常不提倡的,所以,我通过T4模版将原来的实体类小作修改,解决 ...
- EF架构~在T4模版中自定义属性的getter和setter
回到目录 T4模版为我们在ORM操作上提供了便捷,它很方便的可以对实体进行全局性的修改,之前我介绍过通过T4来为属性加默认性,而今天我主要告诉大家如何使用T4模版将getter,setter块改为自己 ...
- T4教程1 T4模版引擎之基础入门
T4模版引擎之基础入门 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看 ...
- T4教程2 T4模版引擎之生成数据库实体类
T4模版引擎之生成数据库实体类 在通过T4模版引擎之基础入门 对T4有了初步印象后,我们开始实战篇.T4模板引擎可以当做一个代码生成器,代码生成器的职责当然是用来生成代码(这不是废话吗).而这其中 ...
- 黄聪:VS2010开发T4模版引擎之基础入门
原文:http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又 ...
- [转]T4模版引擎之生成数据库实体类
本文转自:http://www.cnblogs.com/lzrabbit/archive/2012/07/18/2597953.html 在通过T4模版引擎之基础入门 对T4有了初步印象后,我们开始实 ...
随机推荐
- 为什么commonjs不适合于浏览器端
有了服务器端模块以后,很自然地,大家就想要客户端模块.而且最好两者能够兼容,一个模块不用修改,在服务器和浏览器都可以运行. 但是,由于一个重大的局限,使得CommonJS规范不适用于浏览器环境.还是上 ...
- centos上安装php运行环境
可以参考,但我安装的过程不完全一样http://www.cnblogs.com/liulun/p/3535346.html 我先安装的apache,直接执行的yum -y install httpd ...
- CentOS6.5安装Eclipse
安装说明 1.安装环境: CentOS6.5 64位系统 2.安装方式:tar.gz安装 3.软 件 包:eclipse-jee-luna-SR1-linux-gtk-x86_64.tar.gz 4. ...
- Ubuntu 安装Theano
参考:http://deeplearning.net/software/theano/install_ubuntu.html 编译安装python3.4:http://blog.aboutc.net/ ...
- 11个并不广为人知,但值得了解的Python库
这是一篇译文,文中提及了一些不常见但是有用的Python库 原文地址:http://blog.yhathq.com/posts/11-python-libraries-you-might-not-kn ...
- GPRS 接入外网的过程
请问GPRS模块与Internet上主机的连接.数据传输过程 虽然按照GPRS模块的说明文档能够通过内嵌TCP/IP实现数据的传输,但是对GPRS模块和主机之间的连接关系了解得不是很多.有谁可以介绍一 ...
- 用 string 进行插入、替代、查找输出下标等操作
string s; s = "; string::iterator it; it = s.begin();//让s指向第一个元素 cout << s; system(" ...
- Visual Studio 2013 Web开发
cnbeta新闻:微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Ser ...
- Android安全开发之浅谈密钥硬编码
Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...
- 几种简单的负载均衡算法及其Java代码实现
什么是负载均衡 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助.通过某种负载分担技 ...