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

时间:2009-02-24 19:37:01

标签: c# orm codesmith

我正在购买ORM工具。我对购买CodeSmith(目前大幅折扣)和ORM工具感到痛苦。

LINQ to SQL不在我的列表中; SubSonic 2.x不在列表中(我不想投资那个知道SubSonic 3.0即将到来的死胡同.NHibernate看起来像LLBLGEN一样矫枉过正。我只是简单地评估了EF但是没有迅速得到一个温暖而模糊的感觉。

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

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

8 个答案:

答案 0 :(得分:8)

实际上,hibernate是一个很好的ORM工具。但它停在那里!

代码史密斯功能不仅仅是关系映射人员!我使用代码smith生成一些UI表单,业务层(模板),数据访问层,模式等。 但是要使用代码史密斯,您可能需要良好的系统设计经验或使用我不喜欢使用的模板,但我喜欢这样的例子。

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

决定很难;我一直在阅读重要的名字,比如Scott W. Ambler,Kent beck,Robert C. Martin以及来自The Pragmatic Programmers系列的人们,他们推荐使用ORM Tool来加速开发。他们说ORM工具开发人员关注所有数据库问题(池,连接,数据库供应商细节等)。因此,当我们必须设计数据访问层时,我们也必须考虑所有这些方面。

我相信这些ORM工具伴随着负担过重。我还不知道这些工具在低预算项目中的表现如何(我的意思是不是很好的托管服务器或任何类型的共享资源)。 我见过没有经验的开发人员在尝试传播他们心爱的工具时没有考虑到这一点。但是在java项目中,hibernate已经是一种广为人知的工具。我毫不怀疑使用这项技术已经提供了很棒的项目,但我已经看到任何人和Java开发人员可能需要教我们(.net开发人员)如何构建出色的解决方案。 (对不起,我们必须承认。)

我唯一建议的是考虑你的背景。你在做一个新系统吗?你需要在模式中工作吗?你有没有尝试过这样的代码生成器和ORM工具?

我更喜欢代码史密斯因为我一次生成整个解决方案,而不仅仅是数据访问层。代码生成非常重要,微软在visual studio.net 2008中模仿代码史密斯方法并不是那么简单。

祝你好运

答案 1 :(得分:5)

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

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

如果你真的想要比较两者,那么也许你可能会使用代码史密斯获得一些好处,因为你可以绝对控制生成的代码,但我不确定这些好处是否会超过什么可能会花费几个月来编写代码smith模板来生成基于数据库的DAL。

然后你必须考虑当你对数据库进行更改时会发生什么,你很可能每次都要运行代码smith并构建。一个好的ORM将允许您在模式中配置数据库更改,然后它将动态生成,因此您不必担心(尽可能多)更改数据库。

答案 2 :(得分:5)

NHibernate是要走的路。这是一个企业级的ORM。使用FluentNHibernate库中基于约定的自动配置,如果您坚持使用单一约定(您可以指定约定,或者存在默认值),则配置非常简单。

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

答案 3 :(得分:3)

我每天都使用netTiers并喜欢它。它的文档很糟糕,但在办公室这对我来说是一个节省时间。很多人都抱怨它产生的代码量,但从我看到的情况来看,它创建的代码比手动编码的速度快得多。它还会生成基本CRUD所需的所有sprocs。它产生的访问方法也非常棒,可以通过所有独特的密钥,外键和主键获取。

答案 4 :(得分:2)

我认为Codesmith的使用是可行的。但是你应该研究使用它的框架。 Net Tiers是一个可以构建的应用程序框架,可以删除一个好的DAL。

答案 5 :(得分:0)

为什么像LLblgen这样的东西有点矫枉过正?我们在工作中使用它,经过一段有点陡峭的学习曲线,它非常好:)。你至少应该尝试一下nhibernate。

不知道这与codemith有什么关系,那就是一个代码生成器,你可以推出自己的ORM,但由于那里已经有很好的ORM,我不认为除非你想这样做,否则值得花时间和精力用于学习目的。

答案 6 :(得分:0)

答案 7 :(得分:-2)

几年前我用过LLblgen。我希望我看到的内容得到修复。我们查看了生成并查看的内联SQL,用于选择传入主键的一行数据:

SELECT DISTINCT * FROM TABLE WHERE primark_key_id = @primarykey.

真的,DISTINCT?我总是乞求做商店推销,但是项目负责人击落了什么。我不确定通过编写低效代码节省了多少时间。