我最近决定将我的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开发人员而言比通用开发更有用
谢谢。
答案 0 :(得分:7)
NHibernate 3.0内置了自己的LINQ providerb,您可以通过.Query&lt; T&gt;
访问它所以你不再需要Ayende的NHibernate.Linq提供商了。
另外,NHibernate 3.0 Cookbook可以帮助你。
答案 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)