什么是具有这些要求的最佳 ORM [关闭]
Posted
技术标签:
【中文标题】什么是具有这些要求的最佳 ORM [关闭]【英文标题】:What is best ORM with these requirements [closed] 【发布时间】:2010-08-08 12:45:27 【问题描述】:我正在为即将到来的项目寻找一个好的 ORM。
该数据库将有大约 1000 到 1200 个表,它将在 SQL Server 和 Oracle 中,将根据客户的企业需求使用。 此外,该项目的一些部分将使用 WCF 服务。 我想要一个设计师或类似的东西。 对 LINQ 的良好支持。 可接受的性能。
我尝试过 DataObjects.Net,但它没有任何设计器。我们不能对所有这些表进行编码,也不能使用代码生成器。而且我不确定 DataObjects.Net 是否支持切换数据库。 我也熟悉 EF4,但它不能同时支持两个数据库,并且手动切换数据库(修改 edmx 文件)对于维护工作来说非常痛苦。
提前致谢。
编辑:似乎OpenAccess 和LLBLGEN Pro 有设计师,但我没有使用他们的经验。
【问题讨论】:
我知道没有一个设计师可以很好地处理这么多的对象。你能得到的最好的几乎是 LLBLGEN Pro - 仅仅因为它是唯一一个拥有 DECENT 设计器的设计器,甚至可以用于 1000-1200 个实体(EntityFramework 几乎进入“没有设计器”这个数量 - 它完全无法使用) . 我认为这个问题足够具体,可以免除“非建设性”关闭原因。 【参考方案1】:我仍然会投票支持 Entity Framework v4 - EF4。
毕竟:
您可以拥有多个 EDMX 文件,没问题 - 一个用于 SQL Server,一个用于 Oracle
您可以将它们放入它们自己的类库中,然后在运行时根据需要加载或加载另一个或两者(例如,通过使用 Managed Extensibility Framework 或您自己的东西)
您可以使用连接字符串轻松地将这些 EDMX 文件定位到数据库中 - 一点也不难
【讨论】:
我第二个@marc。 EF4 具有设计器支持和良好的 linq 支持,@marc 保留 2 个 EDMX 文件的想法可以减轻多个 RDBMS 支持的痛苦。 实际上如果你有大约 1200 个表,你真的不应该只有 1 个 edmx 文件。考虑到上下文需要做的所有跟踪,这永远不会在性能方面发挥作用。您仍然需要为 oracle 和 sql server 提供多个 edmx。 @Stephane:是的,好点 - 每个 EDMX 的表不应超过 200 个左右。通常,将您的应用划分为 200 个(或更少)表的组并不难 这很好,谢谢。我将使用我自己的生成器来生成 POCO 类,以便为每个要使用的数据库选择一个 EDMX 文件。是的,我们最终会为不同的子系统使用单独的 EDMX 文件。 @Salar:如果您有兴趣,可以使用 Visual Studio 代码库中的POCO T4 template(或根据您的需要进行修改)。【参考方案2】:OpenAccess 也可以为您完成这项工作。您可以按照 Entity Framework 的建议使用多个 .rlinq 文件和按数据库组装的方法。我为您看到的好处将是您将从 Telerik 获得的支持,因为您很有可能在开发这种比例的解决方案时遇到一两块石头。
【讨论】:
【参考方案3】:鉴于此信息,我建议查看NHibernate(和/或fluent-nhibernate)。
您必须研究的项目是性能。这在很大程度上取决于您的应用程序的性质。 1,000 到 1,200 个表听起来很庞大,因此我建议您在最终确定之前肯定运行一些有意义的性能测试(除了所有其他测试)。
编辑:事实上,NHibernate 更好的起点是nhibernate.info(谢谢,贾斯汀!)。
【讨论】:
为什么选择 NHibernate?为了减少对对象的数据库建模时间,我们想使用设计器等。NHibernate 有设计器吗? 根据这些测试ormbattle.netNHibernate 与其他人相比表现不佳。 @Salor - 这取决于类别,NHibernate 在某些方面比其他方面做得更好,反之亦然。 @Salor:我认为 ormbattle.net 是一个有用的网站,只要您对它持保留态度。看看谁创建了该网站,以及他们的全职工作。 - 对于您的第一条评论:设计师支持 - 在我看来 - 只是要考虑的因素之一,ormbattle.net 列出的一些因素没有。还有更多,这取决于您考虑的情况以及如何权衡它们。 LLBLGen v3 可用作 NHibernate 和 EF 的设计器【参考方案4】:我认为您需要分别选择 ORM 和设计器工具。比如EF和LLBLGEN,或者NHibernate和CodeSmith,或者NHibernate和LLBLGEN等等。
【讨论】:
好点,我将在 EF4 中使用我自己的生成器。【参考方案5】:我也会推荐 NHibernate,但研究它的地方肯定是 NHForge:
http://nhibernate.info/
这是高级功能概述(包括 LINQ):
http://nhibernate.info/doc/nhibernate-features.html
有一些设计师可用,包括 LLBLGen Pro:
http://nhibernate.info/doc/commercial-product-ecosystem.html
NHibernate 3 现在处于 alpha 阶段,但我知道它已经在一些地方用于生产。这可能是开展新项目的最佳方式。
【讨论】:
是的,我同意。更好的起点是 NHForge。我会相应地更新我的答案。以上是关于什么是具有这些要求的最佳 ORM [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
与 .NET 2.0/3.5 一起使用的最佳免费 ORM 工具 [关闭]