2010-03-02 43 views
2

问题:直到现在,我并不知道LINQ是一个ORM工具。我总是把它看作是一种新的SQL查询语言。所以我最近开始使用nHibernate。

所以我的问题:
与nHibernate相比,LINQ的优点和缺点是什么?

据我发现,不同之处在于LINQ需要.NET> 2.0(除非你破解它,这是不安全和非法的),而nHibernate与> = 2.0一起工作。
而对于LINQ,如果您不使用MS-SQL,您需要拥有供应商/第三方LINQ提供者dll。
我不知道哪个更快更容易,以及是否有nHibernate支持的所有数据库的LINQ提供程序,以及LINQ如何与mono一起工作。LINQ与nHibernate

+0

只是为了澄清,LINQ是净3框架的一部分。 – 2010-03-02 11:12:32

+7

好的,你忙于查询语言“Linq”和ORM的“Linq to SQL”。您可以使用LINQ查询NHibernate的,如果你选择... – Murph 2010-03-02 11:21:51

+0

我想我会留下来与NHibernate。 – 2010-03-02 11:30:44

回答

6

Linq不是一个ORM工具。 Linq2Sql和Entity框架是使用Linq的Microsoft ORM工具。我发现this article比较NHibernate的实体框架4.0相当启发。

总结:NHibernate早已建立和测试过,流利使用起来是一种乐趣。不幸的是,NHibernate在文档部门中受到了影响,但它是操作系统,因此您可以深入了解代码。 EF 1.0是可怕的,但4.0更好。这是一款MS产品,因此得到了大力宣传,得到了支持,网络上有很多例子。 4.0现在还在测试阶段。

+1

不管怎样,永远不要读nHibernate文档。 – 2010-03-02 11:31:51

3

LINQ不是一个ORM。 LINQ仅仅是一个查询技术/库,在C#和LINQ中有特殊的语法,NHibernate是互补的技术。甚至有L INQ2NHiernate

LINQ2SQL是一个ORM。 就速度而言,除非您正在制作证券交易软件或类似的东西,否则我不会太担心,因为毫秒是非常重要的。我相信即使StackOverflow在LINQ2SQL上运行,或者在某些时候,但我可能是错的。

+0

OK,所以使用LINQ我的意思是LINQ2SQL ;-)) 我看别的地方,他们是从LINQ切换到NHibernate的性能方面的原因。所以我不确定这不重要。 – 2010-03-02 11:27:53

+0

Linq也适用于vb.net! – ScottE 2010-03-02 11:56:09

1

NHibernate有2个linq提供程序。它们支持所有的数据库NHibernate的支持

1

记住LinqToSql真的LinqToMsSqlServer - 你,如果你走这条路线锁定在...