有人将 netTiers 模板集移植到 Visual Studio 的 T4 模板吗?还是有类似范围的系统?有人在工作环境中使用 T4 吗?Codesmith 和 T4 之间有哪些(如果有的话)主要区别?
3 回答
我在 T4 中涉足了一段时间 - 嘿,如果它是免费的并且包含在 VS2008 中,请使用它,对吗?
我的基本想法是创建一组模板来读取数据库表,并从中创建我们自己的“roll-your-own” ORM 类。
我放弃了 T4,感到沮丧,甚至无法让 CodeSmith 中小菜一碟的最基本的东西工作。
即使是简单的任务,例如选择要使用的服务器、数据库和表,也无法在 T4 中从模板本身的“外部”有效地完成。是的,您可以将所有这些值作为字符串值硬编码到 T4 模板中——但是来吧,这真的不是一个解决方案,是吗?
CodeSmith 对选择服务器、数据库和表有很好的支持,您可以将它们设置为模板上的属性,然后选择您想要的内容,然后让模板在您选择的特定表上执行您的操作。
我的结论:T4 很有希望,但“还没有”。它可能适用于非常简单的场景,但现在,在我看来,它远没有 Codesmith 那样灵活和强大。
对于像 .netTiers 这样的场景,我暂时会坚持使用 Codesmith。
马克
T4 不是 CodeSmith。是的,您以 C# 或 Visual Basic 代码的形式在 .tt 文件中指定参数,并使用 <#@ include #> 指令来引用代码生成逻辑的实际实现。这并不比使用 CodeSmith 在 XML 文件中指定相同的信息更难编码。
对于类似 NetTiers 的 T4 模板套件,请查看 S#arp 架构:http ://code.google.com/p/sharp-architecture/ 。
如果您正在寻找一个支持良好的 DAL 的 T4 实现,它是开源的,具有 Linq 接口以及它自己的 Fluent 接口,它将为表、存储过程、视图等创建包装器。那么您需要尝试 SubSonic 3.0。SubSonic 2.2 具有相同的优点,减去了 T4 和 Linq 接口,并且处于发布模式。SubSonic 3.0 处于 Alpha 阶段,但您可以根据需要下载代码或 .dll 和 T4 模板。