问题:到现在为止,我不知道LINQ是一个ORM工具。我总是把它看作是一种新的SQL查询语言。所以我最近开始使用nHibernate。
所以我的问题:
与nHibernate相比,LINQ的优点和缺点是什么?
据我所知,不同之处在于LINQ需要.NET> 2.0(除非你破解它,这是不安全和非法的),而nHibernate使用> = 2.0。
对于LINQ,如果不使用MS-SQL,则需要有供应商/第三方LINQ提供程序DLL。
我不知道的是哪一个更快/更容易,是否有nHibernate支持的所有数据库的LINQ提供程序,以及LINQ如何与mono工作。
答案 0 :(得分:6)
Linq不是ORM工具。 Linq2Sql和Entity框架是使用Linq的Microsoft ORM工具。我发现this article比较NHibernate和Entity Framework 4,0非常有启发性。
总结:NHibernate,经过长期建立和测试,Fluent是一种使用的快乐。不幸的是NHibernate在文档部门受到影响,但是操作系统让你可以深入研究代码。 EF 1.0非常可怕,但4.0要好得多。它是一个MS产品,所以大量传播,支持,网上有很多例子。 4.0目前仍处于测试阶段。
答案 1 :(得分:3)
LINQ不是ORM。 LINQ只是一个在C#中具有特殊语法的查询技术/库,LINQ和NHibernate是互补技术。甚至有L INQ2NHiernate。
LINQ2SQL是一个ORM。 关于速度,我不会过分担心它,除非你正在制作股票交易软件或类似的东西,毫秒是绝对至关重要的。我相信即使StackOverflow在LINQ2SQL上运行,或者在某些时候运行,但我可能错了。
答案 2 :(得分:1)
NHibernate有2个linq提供程序。它们支持所有数据库NHibernate支持
答案 3 :(得分:1)
请记住,LinqToSql确实是LinqToMsSqlServer - 如果你走这条路,你就被锁定了......