4

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

LINQ to SQL 不在我的列表中;SubSonic 2.x 不在列表中(我不想在知道 SubSonic 3.0 即将到来的情况下投资那个死胡同。NHibernate 和 LLBLGEN 一样似乎有点矫枉过正。我只是简要评估了 EF,但没有很快得到一个温暖和模糊的感觉。

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

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

4

8 回答 8

8

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

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

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

决定很难;我经常阅读重要的名字,例如 Scott W. Ambler、Kent beck、Robert C. Martin 和实用程序员系列中推荐使用 ORM 工具来加速开发的人。他们说 ORM 工具开发人员关心所有数据库问题(池、连接、数据库供应商细节等)。因此,当我们必须设计数据访问层时,我们也必须考虑所有这些方面。

我相信这些 ORM 工具带来了负担。我还不知道这些工具在低预算项目中的表现如何(我的意思是不是好的托管服务器或任何类型的共享资源)。我见过没有经验的开发人员在尝试宣传他们钟爱的工具时没有考虑到这一点。但是在java项目中,hibernate已经是一个广为人知的工具了。我毫不怀疑已经使用这项技术交付了伟大的项目,但我已经看到任何人一次又一次地 Java 开发人员可能需要教我们(.net 开发人员)如何构建出色的解决方案。(对不起,我们不得不承认。)

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

我确实更喜欢 Code smith,因为我一次生成整个解决方案,而不仅仅是数据访问层。代码生成非常重要,微软在visual studio.net 2008 等中模仿了code smith 的方法也很重要。

祝你好运

于 2009-05-15T02:54:14.400 回答
5

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

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

如果您真的想比较两者,那么也许您可能会使用 code smith 获得一些好处,因为您可以绝对控制生成的代码,但我不确定这种好处是否会超过可能转变的缺点花费数月时间编写代码 smith 模板以根据您的数据库生成 DAL。

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

于 2009-02-24T19:43:19.523 回答
5

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

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

于 2009-02-24T20:02:38.010 回答
3

我每天都使用 netTiers 并且喜欢它。它的文档很烂,但它在办公室为我节省了很多时间。很多人抱怨它产生的代码量,但据我所见,它创建的代码比手工编码要快得多。它还生成基本 CRUD 内容所需的所有 sproc。它产生的访问方法也非常棒,可以通过你所有的唯一键、外键和主键获取。

于 2009-05-15T02:58:49.540 回答
2

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

于 2009-02-24T19:48:14.287 回答
0

为什么像 LLblgen 这样的东西会矫枉过正?我们在工作中使用它,经过一段陡峭的学习曲线后,它非常好:)。您至少应该尝试一下并进行休眠。

不知道这与 codesmith 有什么关系,那是一个代码生成器,你可以推出自己的 ORM,但由于那里已经有好的 ORM,我认为除非你想为了学习目的而花费时间和精力.

于 2009-02-24T20:34:36.873 回答
0

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

http://community.codesmithtools.com/CodeSmith/m/templates/42499.aspx

于 2010-07-24T17:27:00.783 回答
-2

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

SELECT DISTINCT * FROM TABLE WHERE primark_key_id = @primarykey.

真的,与众不同?我总是乞求做存储过程,但是项目负责人击落了。我不确定编写低效代码节省了多少时间。

于 2012-09-17T19:20:33.937 回答