【问题标题】:ORM Recommendation for SQL ServerSQL Server 的 ORM 建议
【发布时间】:2009-06-08 14:47:34
【问题描述】:

我将在我的项目中使用 SQL Server,为此我想选择一个 ORM。我对NHibernate as an ORM 有一些经验。事实上,鉴于该项目的性质(MySQL 作为后端)NHibernate 确实是唯一的选择。

我也使用过strongly typed dataset as my ORM,它使用 Microsoft Access 作为后端。我也有一些使用 LINQ2SQL 的经验。

现在,我知道,条条大路通罗马;很多 ORM 可以很好地处理 sql server。但我想要最好的 ORM

  1. 开发时间。也就是说,将我的实体类映射到数据库模式的拖放设计器。这样,如果我更改架构,我的实体类就会自动更新。
  2. 多数据库支持。 ORM 必须能够以最佳方式处理多个数据库查询。此外,多连接字符串支持也必须轻松完成。
  3. 可扩展性。如果我想添加一个查询而不是想弄乱设计器文件;惹得他们头疼。

大概就是这样。有什么想法吗?

【问题讨论】:

  • 说真的,选择 LLBLGen。要求 #1 扼杀 NHibernate(除非你是唯一的开发人员,或者其他人都有经验),并且 #2 有效地扼杀了 Linq 2 SQL 和数据集。

标签: sql-server orm


【解决方案1】:

根据他的要求,LLBLGen 是可行的方法。请注意,LLBL 和 NH 之间存在很大差异。 LLBL 是 ORM/Generator,你的实体会预先生成很多代码,它从数据库开始。因此,如果您想要拖放,那么请务必使用 LLBL。

【讨论】:

  • 我同意这一点:我们已经在几个应用程序中使用了 LLBLGen,并取得了巨大的成功。请记住,LL 代表 Low Level:创建的实体直接从表中派生,用户有责任使用实体作为起点来构建业务对象。
  • +1 for LLBLGen.....已经用了几年了,非常棒,查询语言非常强大。
  • 从几年前(实际上是从 v3 开始)设计器还支持模型优先,因此您可以从头开始并仅从模型开始工作,在处理模型时为您的数据库生成更改脚本:)
【解决方案2】:

LLBLGen 可能是您的选择。

它拥有最好的设计师应用之一,而且功能非常丰富。

【讨论】:

    【解决方案3】:

    ADO .NET Entity Framework?

    似乎在一定程度上满足了每一个要求,虽然并不完美

    【讨论】:

    • 我会等待版本 2。我的印象是 EF 的 V1 还没有准备好迎接黄金时段。
    【解决方案4】:
    • 类型化数据集:0 / 3
    • Linq To Sql : 1 / 3 它可以执行第 3 项。它可以执行某些第 2 项:不同查询的多个连接字符串没有问题 - 但如果您想要在单个查询中使用多个数据库,则必须使用视图或存储过程到达那里。第 1 项是半身像 - 如果您更改架构,您必须自己在设计器中刷新实体。

    【讨论】:

    • 使用 SQLMetal 生成 Linq-to-SQL 数据上下文比使用设计器要快得多 - msdn.microsoft.com/en-us/library/bb386987.aspx
    • 当然,但这仍然不会“自动更新”,除非您将其设为预构建任务或其他内容。
    【解决方案5】:

    不应将强类型数据集视为 OR/M 工具。 (强类型)数据集只是数据库中数据的内存表示(1:1 表示)。

    当您使用 OR/M 时,您可以使用内存中的业务对象(不必是数据库模型的 1:1 表示,可以包含其他逻辑)“转换”数据库中存在的数据等...)。

    也许你可以看看 MS Entity Framework,但是,据我目前所知,NHibernate 在特性、性能、抽象方面仍然是更好的解决方案,而且你可以更好地控制它(但是,那么这可能会带来一些成本(在开发时间)。(没有拖放设计,但您可以从映射中生成数据模型)。​​

    (延迟响应 - 网络故障...)

    【讨论】:

      【解决方案6】:

      我想推荐DbBroker 一个非常快速和轻量级的 ORM 库。

      它针对 SQL Server 进行了优化。

      DbBroker site

      【讨论】:

        猜你喜欢
        • 2012-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-08
        • 2012-08-11
        • 2014-06-05
        相关资源
        最近更新 更多