NHibernate.Linq - 它的效果如何?

Pau*_*aul 9 linq nhibernate linq-to-nhibernate

我们正在使用NHibernate开始一个新项目,并考虑使用NHibernate.Linq(3.0中的嵌入式版本,而不是contrib项目).我知道这是一个相对较新的补充.有没有人使用当前的LINQ for NHibernate?它对于真实世界的应用程序是否足够成熟?

具体而言,您是否遇到过困难,性能如何,是否存在导致您出现问题的支持方面的任何重大差距?

谢谢!

pso*_*usa 9

我在当前项目中广泛使用了NHibernate LINQ,我对它有一些复杂的感受:

在NH2.1的NH Contrib项目中使用了前LINQ后,我可以告诉你这个新版本更加成熟,适合大多数现实场景.但是,一旦你开始做更复杂的查询,和/或需要特别注意性能,一些路障就会开始出现.它仍然有一些错误,你会看到臭名昭着的"方法未实施"很多.无论如何,它与ORM无关,并且可以很好地分离关注点,并且您将利用现有的LINQ知识.它工作得很好......

所以,我的消息是:恕我直言,它已经为现实世界的应用程序做好了准备,但不要指望它是解决每个问题的银弹,并准备在某些(或许多)中使用QueryOver/Criteria/HQL地方.

关于功能不太好的一些侧面说明(根据我的经验):

  • "任何"方法
  • "获取"方法
  • 二级缓存
  • 期货
  • 空间扩展


Flo*_*Lim 8

NHibernate Linq是一个很有潜力的有前途的功能.不幸的是,我已经遇到过几种情况,Linq中的查询不起作用,我不得不使用QueryOver(另一个非常好的补充).

它是否足以成为现实世界的应用程序?是的,如果您不仅限于使用Linq而不是其他任何东西(HQL,ICriteria,QueryOver,甚至是纯SQL).

以下是比较不同API的一个很好的简短示例列表.

问题的形式略有不同:使用NHibernate 3.0 QueryOver或LINQ提供程序进行权衡

我将它与WCF RIA Services结合使用,其中方法的返回类型是IQueryable.