2

嗨,我似乎正处于 ORM 工具的十字路口,希望得到面临类似挑战的人的一些建议。过去,我一直在使用 CodeSmith 和 NetTiers 模板来生成我的 DAL,一切都非常好,但是出于某种原因,我决定放弃它。

所以我正处于十字路口,发现了以下内容:-

  1. 我看过 PLINQO(Linq to SQL),它似乎做得很好,但是微软不确定 Linq to SQL,这可能不是一个好的选择。
  2. Linq to Entities - 这仍处于起步阶段,我可能错了,但人们抱怨膨胀以及存储过程如何
  3. 我看过 nHibernate,这可能是最好的选择,但它似乎是一个陡峭的学习曲线
  4. 同样适用于 LLblgen
  5. 亚音速 - 不确定?
  6. 坚持使用久经考验的 NetTiers,忘记臃肿,忘记你被迫使用企业库,忘记它创建的动态 sql,忘记他们在论坛上几乎没有活动,忘记这个并使用它!

我已经拥有 Codesmith 并且不想购买任何其他东西,生成的代码必须在中等信任模式下工作......

可能还有其他我错过了。我正在寻找解释为什么 ORM 工具值得一看的答案。

谢谢理查德

4

5 回答 5

2

我在上一个项目中自己使用了 .netTiers。但在我正在工作的那一刻,我们正在尝试 Linq 2 实体。你对 Linq2EF 不成熟是对的。我们一直在抱怨它,这就是为什么我们使用从 EDMX 文件生成代码的 T4 模板。我们还更改了这些模板,因此我们拥有业务对象、注入接口和 DAL + DAO。我们很高兴它现在的工作方式。好消息是我们可以对实体使用 LINQ。

否则,我也会向您推荐Fluent nHibernate链接)。这也是我们考虑的事情之一。但是你必须自己写很多东西。这不像您习惯在 .netTiers 中为您生成所有代码。

由于Subsonic 3 (链接) 大约只有一周的时间,我建议你检查一下。根据我所看到的,它看起来很有希望。它使用 T4,因此您可以对其进行切片和切块以满足您的需求。

于 2009-07-10T08:22:22.580 回答
1

我尝试了几个星期,最终选择了 NHibernate。它非常容易定制。有一个学习曲线,设置 linq to sql 之类的东西需要更长的时间,但这样做的好处是它看起来不像魔术。您将了解它的工作原理,并能够完全自定义它以满足您的需求。社区也很好,有很多可用的文档。在我看来,现代 ORM(无代码生成,可以使用 POCO)和成熟度之间取得了很好的平衡。

于 2009-07-10T09:18:45.600 回答
1

你可以试试 DataObjects.NET。这个 ORM 使用“代码优先”的方法,支持 DB 模式升级和 LINQ。检查此简要说明http://www.x-tensive.com/Products/DO/

于 2009-07-29T07:08:09.147 回答
0

出于使用 ORM 的原因,这里是Glenn Block 的博客文章的链接,它确实说明了一切。至于我的经验,就在一年多前,我正在寻找使用 ORM 并选择了 NHibernate。

对我来说,持久性是一个已解决的问题,除了从我的域模型到我的关系数据的某种形式的映射之外,这是我不必再担心的事情了。我查看了 Linq To SQL,但它只是没有让我对数据如何映射到我的对象有足够的控制权,而且实体框架还没有成熟到足以满足我的喜好。我的一些团队正在使用的另一个主要项目使用 NetTiers 和 CodeSmith,就像你说的那样,臃肿、代码生成(以及它的绝对数量)让我感到有点疑惑。最后,我选择了 NHibernate,因为对我来说,它是最成熟的 ORM 之一,它提供的功能不仅支持细粒度的对象模型,而且它内置了查询工具,它固有地解决了其他性能问题比如缓存。

是的,我承认学习曲线非常陡峭,但是如果您投入时间,从中获得的好处是巨大的。Ayende RahienFabio Maulo的博客是关于 NHibernate 的信息的宝库。通过这个LINQ 提供程序对 NHibernate 有一些 LINQ 支持,但Steve Strong目前正在整合将在 NHibernate 中提供完整 LINQ 支持的功能。所以这一切都适用于 NHibernate,但归根结底,这取决于你最喜欢什么。

于 2009-07-10T09:14:50.460 回答
0

我认为目前最有信誉和最强大的两个 ORM 工具是nHibernateLLBLGen Pro

nHibernate =非常面向领域驱动。

LLBLGen Pro =面向数据驱动。

它们都非常出色,对于每个项目,取决于它的性质,一个可能比另一个更合适。它还经常归结为个人选择和偏好,甚至是开发团队的文化。

就像我说的,尽管最后,总体而言,它们都非常出色,并且都有各自的优点/缺点。

于 2009-07-10T23:06:59.860 回答