【发布时间】:2009-12-02 00:24:12
【问题描述】:
只是想知道是否有人在迁移到 C# 3 后仍会使用 Hibernate
这些是互斥的吗??
【问题讨论】:
只是想知道是否有人在迁移到 C# 3 后仍会使用 Hibernate
这些是互斥的吗??
【问题讨论】:
需要注意的是,Linq 不仅仅是一个ORM 工具。还有Linq-To-XML 和Linq-To-Objects 仅举两个,但还有更多。 Linq 是 C# 和 VB 的一组语言扩展,在处理对象集合时为您提供语法糖。
至于您的主要问题,如果您有从表到域对象的一对一映射,Linq-to-SQL 就可以了。 NHibernate 的独到之处在于您拥有现有的复杂域模型或现有的复杂数据库模式,并且您希望在它们之间进行映射。
此外,Linq-To-NHibernate 可以同时使用两者。
【讨论】:
Linq 更多的是关于创建一种可以查询 DB、XML、对象或任何自定义数据存储的统一方式。 Hibernate 仅用于查询数据库。 您可以使用 Hibernate 而不是 Linq-to-SQL,以防您更加熟练和舒适,因为 Linq 提供了与 Hibernate 几乎相同的强大方法来查询 DB。因此,在将我们的讨论限制在 DB 上时,Linq 可以为您提供与 Hibernate 相同(或大部分!)的目的。
【讨论】:
如果 NHibernate 可以与 Hibernate 竞争,我认为更多的人会使用它。话虽如此,.net 商店通常不需要 NHibernate。
【讨论】:
Linq To NHibernate 单独存在,证明不是。
【讨论】:
您的术语已关闭。 LINQ 只是用于操作数据的语法糖。 Linq to Sql 可能就是你所说的。
IIRC Linq to Sql 仅支持 MSSql(显然他们故意取消了与其他数据库提供程序的兼容性,我不知道为什么,有些人推测反竞争,其他人说最后期限出现了,所以他们只是剔除了尚未准备好的东西) .因此,NHibernate 不可能在这里无关紧要。
实体框架(支持所有数据库的 MS 的 ORM 工具)。当这最初出现在一些 ORM 社区 hated it 时,它不支持“持久性无知”以及社区对现代 ORM 的期望的许多特性、概念和前提。我相信他们正在努力改进它,但要接近 NHibernate IMO,他们还有很多工作要做。
所以不,如果您想对您的 ORM 进行精细控制,NHibernate 仍然非常重要。它是最灵活但最复杂的 ORM 之一,因此仍然占有一席之地。
【讨论】:
我不太喜欢 linq-to-sql(因为这就是您的意思),因为您必须设计数据库模式。使用hibernate(虽然我使用了一个名为XPO的类似产品),您只需制作您的对象,框架会处理关系(一对一、多对一、M-To-M)。
这是 linq to sql 的一大缺点。所以不,它们不是相互排斥的。
【讨论】: