分享一套 CodeSmit 代码生成模板。
分享一套 CodeSmit 代码生成模板。
住博客园 5 年了,以前也发过一些博文,但都在 一天后 / 几周后 / 几年后 将它删了;因为感觉代码写得不好:不清晰或侵入太大,哪怕只有一句侵入。
可是最近重写一套 CodeSmith 代码生成模板的时候,发现自己编码能力长进不少:有能力删除大量代码了。删除得很顺利,即使不舍;看上去这是个好事,可也是个坏事:现已难以回忆起当初为什么删这些代码、更回忆不起来最初为什么加这些代码。
这些决策信息的丢失真是让人痛心疾首。
接下来,我要实现一个好玩的东西:维护对象在内存中的引用一致性。这一次,我可不想让那些左右决策的依据不翼而飞了;她们很珍贵:那是我的思路。
另外介绍一下上期成果吧,其实就是发个广告啦:
很多人、包括直到前不久离职的我,都在进行着 基于数据库且数据库优先 的简单应用开发。所幸的是大家都使用着相同的实现模式:Entity -(IDal、Dal)- Bll。
于是,我要写一套 CodeSmith 模板,让有缘人看到、使用 或 修改。
包括这套,一共编写了三套 CodeSmith 模板;
第一套实现了基本的可用功能,第二套添加了自认为有亮点的功能,这次重构并删除了那些自认为有亮点的功能;
所以也留下了一些心结:
- 枚举类型的字段。虽然可让代码强类型、可读性强,但使用字段注释和类型转换也可弥补。
- 视图中的唯一键。这个关系到分页性能,不过如果最多只返回 Top 500 之类的则也没啥差别。
- TransactionScope。SqlServer 2000 时需要启动 MsDtc 服务且影响性能,不过 SqlServer 2005 以上就不需要了。
说明
如果使用 CodeSmith 5.0,则在 CodeSmith 的 Template Explorer 的工具栏中点击第一个按钮(Create Template Folder Shortcut)指向 DatabaseBasedCodeGenerator 文件夹。

打开 Main.cst,编译后在 Properties 设定必填属性就可运行 Main.cst 了,运行后会生成完整的解决方案。
是否能编译则还要看你的数据库元素的命名是否重复。生成的主要是数据访问的实现:


其中 Filter 和 Condition 是为了让查询条件强类型而引入的。
Condition 弥补了 Filter 中条件只能与的缺陷。
所以,Condition 蕴含的 Sql 是依靠数据库元数据生成的,因为使用 CodeSmith,所以参考了其 SchemaExplorer 命名空间中类的命名:
下载点这里。
分享一套 CodeSmit 代码生成模板。的更多相关文章
- 不再害羞,过程比结果更重要;分享一套 CodeSmit 代码生成模板。
住博客园 5 年了,以前也发过一些博文,但都在 一天后 / 几周后 / 几年后 将它删了:因为感觉代码写得不好:不清晰或侵入太大,哪怕只有一句侵入. 可是最近重写一套 CodeSmith 代码生成模板 ...
- 分享几套bootstrap后台模板【TP5版】
分享几套bootstrap后台模板[TP5版],模板来源于网络,需要的拿走.1.AdminLTE 链接: http://pan.baidu.com/s/1o7BXeCM 密码: zfhy 2.Boot ...
- 分享一套Code Smith 搭建N层架构模板
开篇 平常开发时,由于冗余代码过多,程序员做重复的工作过多势必会影响开发效率.倘若 对重复性代码简单的复制.粘贴,虽然也能节省时间,但也需仔细一步步替换,这无疑也是一件费力的事.这时我们急需代码生成工 ...
- 圣诞礼物:分享几套漂亮的圣诞节 PSD 素材
马上就到圣诞节了,这篇文章要给大家分享几套精美的圣诞节相关的 PSD 设计素材,你可以免费下载使用,用于圣诞节相关的设计项目中.这些免费素材能够帮助你节省大量的时间,而且能有很好的效果. 您可能感兴趣 ...
- 分享一套精美的现代 UI PSD 工具包【免费下载】
艾库特·耶尔马兹,是土耳其伊斯坦布尔的一位高级艺术总监,他向大家分享了一套美丽的现代 UI 工具包,你可以免费下载.所以,你可以使用这个优秀的素材设计视觉互动和有吸引力的用户界面. 此 UI 套件提供 ...
- Silverlight分享一套企业开发主题
Silverlight分享一套企业开发主题 Silverlight默认主题时间长了,也视觉疲劳了,于是上网上找了下Silverlight主题.发现SL的主题并不多,下面这套JetPack主题还是SL4 ...
- 业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送)
业余草分享100套精选1000G架构师资料课程(超1T的IT学习资料免费送). 超过1024G的IT学习资料免费领取,你值得拥有! 领取资源方式,关注“业余草”公众号,回复对应的关键字 01.回复”我 ...
- 分享几套生成iMac相关高逼格免费mockup的素材和在线工具
好久没有过来转, 今天姐姐我分享几套高逼格的iMac相关设计资源, 希望各位靓妹帅哥会喜欢, 最重要滴是,都是FREE,此处应有掌声~~~ , yeah!! iMac桌面效果Mockup 只需要下载后 ...
- 分享几套古典复古式的UI设计
古典复古的UI界面设计能够非常好的点缀你的网页,特别是如果你需要展示你的产品或者内容的深度内涵或者体验你的内容或者产品的经久不衰的气质的 话,古典或者复古式的界面UI绝对是你首选,在这里我们收集了10 ...
随机推荐
- BAT 特殊符号总结
原文:BAT 特殊符号总结 BAT特殊符号总结,用好特殊符号,利用提高开发效率.^ 转义符 用在特殊符号之前 比如: echo 非常^&批处理 如果不加^ 那么"批处理"将 ...
- vim跳转
w 跳到下一个单词的开始 e 跳到单词的结束 b 向后跳 gg 跳到文件的开始 G 跳到文件的结束 10gg 或10G 跳到第10行 ta 跳到下一个a 前面 fa 跳到下一个a 大写的意思相反 另外 ...
- Atitit.软件GUIbutton与仪表盘--db数据库区--导入mysql sql错误的解决之道
Atitit.软件GUIbutton与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Targe ...
- WPF中嵌入WinForm中的webbrowser控件
原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...
- cocos2d 游戏开发实战
文章转自:http://uliweb.clkg.org/tutorial/read/40 6 cocos2d 游戏开发实战 6.1 创建cocos2d项目 6.2 cocos2d v3 & ...
- 纯Lambda实现斐波那契数列
还需要考虑溢出等问题,主要无事写着玩 Func<float, float, float> a = (arg1, arg2) => 0f;//init ; a = (lastNumbe ...
- 使用Windows2003的IIS发布网站 - 进阶者系列 - 学习者系列文章
本系列文章目录:http://www.cnblogs.com/lzhdim/category/277150.html Windows 2003是一款不错的Windows服务器版本.在刚工作的前些年里, ...
- serialVersionUID行动
ORIGINAL:未知 Java断类的serialVersionUID来验证版本号一致性的.在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地对应实体(类)的seria ...
- Unit of work + Repository
(Unit of work + Repository) 今日后开启进阶模式! 谈到MVC与EntityFramework,则不得不说一说事务与仓储(Unit of work + Repository) ...
- FileOutputStream字节输出流和FileInputStream输入流(切记:out是输出到本地中,in是输入到程序中)这里介绍大文件和小文件的读取方式
//FileOutputStream public class FileOutputStreamDemo { /**字节流:适用于任何文件,以字节为单位,进行读写操作 *字节流操作步骤: *1.创 ...