发布一个基于 CodeSmith 的代码生成器。

时间:2021-03-21 12:53:44
•原委

废话不要,他们都该删。 

很多人、包括直到前不久离职的我,都在进行着 基于数据库且数据库优先 的简单应用开发。所幸的是大家都使用着相同的实现模式:Entity -(IDal、Dal)- Bll。
 于是,我要写一套 CodeSmith 模板,让有缘人看到、使用 或 修改。 


•实施

包括这套,一共编写了三套 CodeSmith 模板;
 第一套实现了基本的可用功能,第二套添加了自认为有亮点的功能,这次重构并删除了那些自认为有亮点的功能;
 所以也留下了一些心结: 
1.枚举类型的字段。虽然可让代码强类型、可读性强,但使用字段注释和类型转换也可弥补。
2.视图中的唯一键。这个关系到分页性能,不过如果最多只返回 Top 500 之类的则也没啥差别。
3.TransactionScope。SqlServer 2000 时需要启动 MsDtc 服务且影响性能,不过 SqlServer 2005 以上就不需要了。


•结果

下载 并使用  CodeSmith 运行 Main.cst。


•说明

如果使用 CodeSmith 5.0,则在 CodeSmith 的 Template Explorer 的工具栏中点击第一个按钮(Create Template Folder Shortcut)指向 DatabaseBasedCodeGenerator 文件夹。
发布一个基于 CodeSmith 的代码生成器。
 打开 Main.cst,编译后在 Properties 设定必填属性就可运行 Main.cst 了,运行后会生成完整的解决方案。
发布一个基于 CodeSmith 的代码生成器。
 是否能编译则还要看你的数据库元素的命名是否重复。


生成的主要是数据访问的实现:
发布一个基于 CodeSmith 的代码生成器。
发布一个基于 CodeSmith 的代码生成器。
 其中 Filter 和 Condition 是为了让查询条件强类型而引入的。
发布一个基于 CodeSmith 的代码生成器。
Condition 弥补了 Filter 中条件只能与的缺陷。
发布一个基于 CodeSmith 的代码生成器。
 所以,Condition 蕴含的 Sql 是依靠数据库元数据生成的,因为使用 CodeSmith,所以参考了其 SchemaExplorer 命名空间中类的命名:
发布一个基于 CodeSmith 的代码生成器。
 如有更多问题,请  联系我。 

31 个解决方案

#1


感谢分享。因为主要是软件推广而不是技术分享,就不给推荐了。帮你转移到非技术区。

#2


感谢分享

#3


引用 1 楼 caozhy 的回复:

好的。

#4


早知道发在 水园 了,这里简直是小黑屋啊

#5


感谢分享

#6


饿,那个。。 JAVA的路过。。

#7


不 明 觉 历

#8


发布一个基于 CodeSmith 的代码生成器。没看懂  但是感觉好厉害的样子!!!

#9


难道用 CodeSmith 的人不多,都 T4 了?

#10


感谢分享~~~~~~~~~

#11


接分,加星,凑字数

#12


发布一个基于 CodeSmith 的代码生成器。

#13


发布一个基于 CodeSmith 的代码生成器。

#14


引用 10 楼 zhangzong52021 的回复:

谢谢推荐

#15


发布一个基于 CodeSmith 的代码生成器。

#16


发布一个基于 CodeSmith 的代码生成器。

#17


引用 14 楼 zhenghaibingood 的回复:
Quote: 引用 10 楼 zhangzong52021 的回复:

谢谢推荐

不客气

#18


不清楚 感觉满厉害的

#19


早晚各一顶。

#20


太厉害了,一共编写了三套 CodeSmith 模板

#21


三次,不断地重构嘛。

#22


现在依旧用codesmith的路过...

#23


mark........

#24


发布一个基于 CodeSmith 的代码生成器。

#25


引用 22 楼 QDwangle 的回复:

codesmith 不仅可以基于数据库,自定义schema带来的扩展性也是挺强的,不过还是 t4 集成性好

#26


该回复于2013-06-26 08:50:09被管理员删除

#27


该回复于2013-06-26 08:49:46被管理员删除

#28


Codesmith感脚用的不想用了

我曾经还写过codesmith的脚本,要不也拿出来分享?

#29


那自然是好。

#30


虽然不知道这个干嘛的,帮顶

#31


该回复于2013-06-27 14:43:20被管理员删除

#1


感谢分享。因为主要是软件推广而不是技术分享,就不给推荐了。帮你转移到非技术区。

#2


感谢分享

#3


引用 1 楼 caozhy 的回复:

好的。

#4


早知道发在 水园 了,这里简直是小黑屋啊

#5


感谢分享

#6


饿,那个。。 JAVA的路过。。

#7


不 明 觉 历

#8


发布一个基于 CodeSmith 的代码生成器。没看懂  但是感觉好厉害的样子!!!

#9


难道用 CodeSmith 的人不多,都 T4 了?

#10


感谢分享~~~~~~~~~

#11


接分,加星,凑字数

#12


发布一个基于 CodeSmith 的代码生成器。

#13


发布一个基于 CodeSmith 的代码生成器。

#14


引用 10 楼 zhangzong52021 的回复:

谢谢推荐

#15


发布一个基于 CodeSmith 的代码生成器。

#16


发布一个基于 CodeSmith 的代码生成器。

#17


引用 14 楼 zhenghaibingood 的回复:
Quote: 引用 10 楼 zhangzong52021 的回复:

谢谢推荐

不客气

#18


不清楚 感觉满厉害的

#19


早晚各一顶。

#20


太厉害了,一共编写了三套 CodeSmith 模板

#21


三次,不断地重构嘛。

#22


现在依旧用codesmith的路过...

#23


mark........

#24


发布一个基于 CodeSmith 的代码生成器。

#25


引用 22 楼 QDwangle 的回复:

codesmith 不仅可以基于数据库,自定义schema带来的扩展性也是挺强的,不过还是 t4 集成性好

#26


该回复于2013-06-26 08:50:09被管理员删除

#27


该回复于2013-06-26 08:49:46被管理员删除

#28


Codesmith感脚用的不想用了

我曾经还写过codesmith的脚本,要不也拿出来分享?

#29


那自然是好。

#30


虽然不知道这个干嘛的,帮顶

#31


该回复于2013-06-27 14:43:20被管理员删除