C# Codesmith是一个可行的ORM工具吗(或者我应该坚持使用真正的ORM)

C# Codesmith是一个可行的ORM工具吗(或者我应该坚持使用真正的ORM),c#,orm,codesmith,C#,Orm,Codesmith,我在买一个ORM工具。我正在为购买CodeSmith(目前有相当大的折扣)和ORM工具而苦恼 LINQ to SQL已从我的列表中删除;亚音速2.x已经不在名单上了(我不想在知道亚音速3.0即将到来的情况下投资于这条死胡同。NHibernate和LLBLGEN似乎有点过火。我只是简单地评估了EF,但并没有很快从中得到温暖和模糊的感觉 我是否疯狂地认为CodeSmith是现成ORM的理性替代品?CodeSmith会以其他方式为自己买单吗 请注意,我与任何供应商都没有任何关系,这不是一个廉价的问题,

我在买一个ORM工具。我正在为购买CodeSmith(目前有相当大的折扣)和ORM工具而苦恼

LINQ to SQL已从我的列表中删除;亚音速2.x已经不在名单上了(我不想在知道亚音速3.0即将到来的情况下投资于这条死胡同。NHibernate和LLBLGEN似乎有点过火。我只是简单地评估了EF,但并没有很快从中得到温暖和模糊的感觉

我是否疯狂地认为CodeSmith是现成ORM的理性替代品?CodeSmith会以其他方式为自己买单吗


请注意,我与任何供应商都没有任何关系,这不是一个廉价的问题,因此,这只是为了产生产品噪音!我正在寻找关于CodeSmith作为ORM工具(及其提供的或社区可用的)模板的真诚建议和意见。

Code Smith不是ORM,它只是一个代码生成器IDE

您可以使用基于数据库的代码smith生成DAL,但这会破坏使用ORM的目的之一,ORM基本上是动态生成DAL,因此您不必编写代码

如果您真的试图比较这两种方法,那么使用CodeSmith可能会有一些好处,因为您可以完全控制生成的代码,但我不确定这种好处是否会超过缺点,即可能会花费数月的时间编写CodeSmith模板,根据您的d生成DAL数据库


然后,您必须考虑更改数据库时会发生什么情况,您很可能每次都要运行code smith并进行构建。一个好的ORM将允许您在模式中配置数据库更改,然后它将动态生成,这样您就不必担心(太多)关于对数据库进行更改。

我认为使用Codesmith是可行的。但您应该研究使用它的框架。这是一个应用程序框架,可以建立在它的基础上,以创建一个好的DAL。

是一种可行的方法。它是一个企业级ORM。通过库中基于约定的自动配置,configurati如果您坚持一个约定(您可以指定约定,或者有默认值),那么on的操作就非常简单


使用NHibernate,您的域对象是纯C#对象。没有奇怪的基类。没有每次决定进行更改时都需要刷新的编码文件。

为什么像LLblgen这样的东西会被过度使用?我们在工作中使用它,经过一段陡峭的学习曲线后,它非常好:)。你至少应该试试这个,然后再试试nhibernate


虽然不确定这与codesmith有什么关系,那是一个代码生成器,你可以使用你自己的ORM,但是既然已经有好的ORM,我认为不值得花费时间和精力,除非你想为了学习而这样做。

事实上,hibernate是一个很好的ORM工具。但它就到此为止

CodeSmith的功能可以不仅仅是一个关系映射人员!我使用CodeSmith生成一些UI表单、业务层(模板)、数据访问层、模式等。 但要与CodeSmith合作,您可能需要有良好的系统设计经验或使用他们的模板,我不喜欢使用这些模板,但我喜欢将其作为示例

代码史密斯方法有一个特殊的缺点;您必须首先考虑数据库实现来设计系统。如今,在对象分析方法中,人们在实现任何数据库实现之前成功地实现了业务逻辑和实体——他们忘记了这一点

决定很难;我经常读到一些重要的名字,如Scott W.Ambler、Kent beck、Robert C.Martin和Practical Programmers系列中推荐ORM工具以加速开发的人。他们说ORM工具开发人员关心所有数据库问题(池、连接、数据库供应商细节等)。因此,当我们必须设计数据访问层时,我们也必须考虑所有这些方面。 我相信这些ORM工具带来了过重的负担。我还不知道这些工具在低预算项目中的表现如何(我指的是不好的托管服务器或任何类型的共享资源)。 我见过经验不足的开发人员在尝试推广他们喜爱的工具时没有考虑到这一点。但是在java项目中,hibernate已经是一个广泛使用且众所周知的工具。我毫不怀疑伟大的项目是使用这种技术交付的,但我见过任何人,而且java开发人员可能需要教我们(.net开发人员)如何构建伟大的解决方案。(对不起,我们不得不承认。)

我唯一建议的是考虑你的背景。你在做一个新系统吗?你需要有规律的工作吗?你曾经尝试过考虑这样的代码生成器和ORM工具吗? 我更喜欢CodeSmith,因为我一次生成整个解决方案,而不仅仅是数据访问层。代码生成非常重要,而且微软在VisualStudio.NET2008等中模仿了CodeSmith方法


祝你好运

我每天都使用netTiers,我很喜欢它。它的文档很糟糕,但它为我在办公室节省了很多时间。很多人抱怨它产生的代码量,但从我所看到的,它创建的代码比手工编码的速度快得多。它还生成基本CRUD所需的所有存储过程。它产生的访问方法也非常棒,可以使用所有的唯一键、外键和主键。

使用netTiers和.netMVP。NetTiers是一个非常好的DAL,netMVP是我刚刚发布的一个框架,用于支持UI级别的抽象:


几年前我用过LLblgen。我希望我看到的已经被修复了。我们查看了为选择一行数据而生成和看到的内嵌SQL
SELECT DISTINCT * FROM TABLE WHERE primark_key_id = @primarykey.