NHibernate Linq提供者问题

时间:2010-03-16 20:37:03

标签: nhibernate linq-to-nhibernate

任何人都可以回答我

的不同之处

Session.Query
  Session.Linq和
  Session.QueryOver

我真正感兴趣的是:
未来版本将支持哪些内容 我应该在干净的项目中开始使用什么。

请告诉我你对这三个人的看法......

谢谢, 佐尔坦

1 个答案:

答案 0 :(得分:5)

Session.Query是当你想在NHibernate 3.0中使用新的和大大改进的linq提供程序时使用的类。如果您正在使用linq并且您正在开始一个新项目,那么这就是要使用的类。

如果您使用旧的linq提供程序,Session.Linq是要使用的类。我会说你只会使用旧类代码的这个类。较旧的linq提供程序实际上是Criteria API的包装器,虽然对于更简单的查询很好,但是一旦事情变得更加苛刻,它就会受到限制。

Session.QueryOver是NHibernate的Criteria API的包装器。如果您已经精通Criteria API,那么这是一个非常平易近人的界面。它消除了大多数字符串,用lambda表达式替换它们。这是一个非常流畅的界面。语法类似于linq,但这是而不是 linq提供者。

此时我会说你想要使用Query和QueryOver接口。