我们正在使用NHibernate开始一个新项目,并考虑使用NHibernate.Linq(3.0中的嵌入式版本,而不是contrib项目)。我知道这是一个相对较新的补充。有没有人使用当前的LINQ for NHibernate?它对于真实世界的应用程序是否足够成熟?
具体来说,您是否遇到过困难,性能如何?是否存在导致您出现问题的支持方面的主要差距?
谢谢!
答案 0 :(得分:9)
我在当前的项目中广泛使用了NHibernate LINQ,我对它有一些复杂的感受:
在NH2.1的NH Contrib项目中使用了以前的LINQ,我可以告诉你这个新版本更成熟,适合大多数现实场景。但是,一旦你开始做更复杂的查询,和/或需要特别注意性能,一些路障就会开始出现。它仍然有一些错误,你会看到臭名昭着的“方法未实施”很多。无论如何,它与ORM无关,并且可以很好地分离关注点,并且您将利用现有的LINQ知识。它运作得很好......
所以,我的消息是:恕我直言,它已经为现实世界的应用程序做好了准备,但是不要指望它是解决每个问题的银弹,并准备在某些问题上使用QueryOver / Criteria / HQL(或许多地方。
关于功能不太好的一些侧面说明(根据我的经验):
答案 1 :(得分:8)
NHibernate Linq是一个很有潜力的有前途的功能。不幸的是,我已经遇到过几种情况,Linq中的查询不起作用,我不得不使用QueryOver(另一个非常精细的添加)。
它对于真实世界的应用程序是否足够成熟?是的,如果您不仅限于使用Linq而不是其他任何内容(HQL,ICriteria,QueryOver,甚至是纯SQL)。
以下是一个很好的简短示例列表comparing the different APIs。
问题的形式略有不同:Tradeoffs using NHibernate 3.0 QueryOver or LINQ provider
我将它与WCF RIA Services结合使用,其中方法的返回类型是IQueryable。