NHibernate 3.0和LINQ:我错过了什么?

时间:2011-01-29 00:56:58

标签: c# linq nhibernate

我最近决定将我的Web应用程序从NHibernate 2.1升级到3.0,这是最新版本的NH。我还决定从.NET 2.0升级到3.5以获得与Mono的最佳兼容性(webapp仅在Linux中运行),因为它已经足够成熟。

我想与LINQ和NHibernate一起玩,因为我也看到NHibernate.Linq命名空间包含在发行版中。

但是,当我尝试使用ISession实例编写LINQ时,我没有得到Linq<T>方法。

我读了很多旧的博客帖子,为了使用LINQ to NH,你必须使用NHContrib包。

我的问题是

我还需要下载NHContrib吗? NH版本3.0比NHContrib的LINQ to NH更新,我在发布中看到了Linq命名空间

或者,

是否因为Visual Studio 2010升级而使用2.0-> 3.5框架升级?我仔细检查了目标框架IS 3.5。

不幸的是,除了完整的类文档之外,我找不到NH 3.0的全面文档,这对于NH开发人员而言比通用开发更有用

谢谢。

2 个答案:

答案 0 :(得分:7)

NHibernate 3.0内置了自己的LINQ providerb,您可以通过.Query&lt; T&gt;

访问它

所以你不再需要Ayende的NHibernate.Linq提供商了。

另外,NHibernate 3.0 Cookbook可以帮助你。

https://www.packtpub.com/nhibernate-3-0-cookbook/book

答案 1 :(得分:0)

另请注意,内置LINQ提供程序不支持.Equals子句中的Where方法,而是需要使用==。例如,以下用于在2x中使用NHibernate.Linq的地方:

(from e in myEntities where e.Name.Equals(nameLookup) select e)

你现在需要做

(from e in myEntities where e.Name == nameLookup select e)