【问题标题】:Does Linq Remove The Need For Hibernate?Linq 是否消除了对休眠的需求?
【发布时间】:2009-12-02 00:24:12
【问题描述】:

只是想知道是否有人在迁移到 C# 3 后仍会使用 Hibernate

这些是互斥的吗??

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    需要注意的是,Linq 不仅仅是一个ORM 工具。还有Linq-To-XMLLinq-To-Objects 仅举两个,但还有更多。 Linq 是 C# 和 VB 的一组语言扩展,在处理对象集合时为您提供语法糖。

    至于您的主要问题,如果您有从表到域对象的一对一映射,Linq-to-SQL 就可以了。 NHibernate 的独到之处在于您拥有现有的复杂域模型或现有的复杂数据库模式,并且您希望在它们之间进行映射。

    此外,Linq-To-NHibernate 可以同时使用两者。

    【讨论】:

    • 所以linq只允许你从一张表中查询??
    • 事实上,Linq 与集合并没有什么特别的关系——它更通用。见stackoverflow.com/questions/1418106/how-much-is-there-to-linq/…
    • 否,因为您可以使用 join 关键字将对象集合连接在一起。然后,Linq-To-Sql 框架将生成将发送到服务器的 sql 连接。
    • 谁能举例说明什么时候使用 NHibernate 和 Linq?
    • 使用 NHibernate 和 Linq 的一个很好的例子是使用允许通过 linq 查询的通用 IRepository 接口。所以我们将在实现中使用 NHibernate,但使用您的存储库的逻辑将使用 Linq。
    【解决方案2】:

    Linq 更多的是关于创建一种可以查询 DB、XML、对象或任何自定义数据存储的统一方式。 Hibernate 仅用于查询数据库。 您可以使用 Hibernate 而不是 Linq-to-SQL,以防您更加熟练和舒适,因为 Linq 提供了与 Hibernate 几乎相同的强大方法来查询 DB。因此,在将我们的讨论限制在 DB 上时,Linq 可以为您提供与 Hibernate 相同(或大部分!)的目的。

    【讨论】:

      【解决方案3】:

      如果 NHibernate 可以与 Hibernate 竞争,我认为更多的人会使用它。话虽如此,.net 商店通常不需要 NHibernate。

      【讨论】:

        【解决方案4】:

        Linq To NHibernate 单独存在,证明不是。

        【讨论】:

          【解决方案5】:

          您的术语已关闭。 LINQ 只是用于操作数据的语法糖。 Linq to Sql 可能就是你所说的。

          IIRC Linq to Sql 仅支持 MSSql(显然他们故意取消了与其他数据库提供程序的兼容性,我不知道为什么,有些人推测反竞争,其他人说最后期限出现了,所以他们只是剔除了尚未准备好的东西) .因此,NHibernate 不可能在这里无关紧要。
          实体框架(支持所有数据库的 MS 的 ORM 工具)。当这最初出现在一些 ORM 社区 hated it 时,它不支持“持久性无知”以及社区对现代 ORM 的期望的许多特性、概念和前提。我相信他们正在努力改进它,但要接近 NHibernate IMO,他们还有很多工作要做。

          所以不,如果您想对您的 ORM 进行精细控制,NHibernate 仍然非常重要。它是最灵活但最复杂的 ORM 之一,因此仍然占有一席之地。

          【讨论】:

            【解决方案6】:

            我不太喜欢 linq-to-sql(因为这就是您的意思),因为您必须设计数据库模式。使用hibernate(虽然我使用了一个名为XPO的类似产品),您只需制作您的对象,框架会处理关系(一对一、多对一、M-To-M)。

            这是 linq to sql 的一大缺点。所以不,它们不是相互排斥的。

            【讨论】:

            • 我不明白。我没有使用休眠,但我知道 linqtosql 会自动从数据库模式推断关系。您不必手动设置它们。
            • 使用 Hibernate 也不能跳过设计数据库的步骤。 Hibernate 和 Linq 仅用于查询现有数据库(可能是通过使用数据库模式)......但它们不会为您创建模式。
            猜你喜欢
            • 1970-01-01
            • 2010-10-19
            • 2012-01-19
            • 1970-01-01
            • 2016-11-25
            • 2012-12-01
            • 1970-01-01
            • 2011-07-13
            • 2016-01-26
            相关资源
            最近更新 更多