我正在将一些代码从Nhibernate 2.x转换到3.0。在此之前,我使用LINQ插件来获得LINQ支持。我的理解是,在3.0中,它是作为一流的特性出现的。所以我的问题是,我曾经有这样的想法:
return new List<T>(session.Linq<T>().Where(where));
使用新的语法会是什么样子?我浏览了nhib3文档和教程,没有看到任何关于linq的东西,所以我找不到一个可以效仿的例子。
发布于 2011-02-23 03:51:49
在带有Linq的NHibernate 3中,您可以执行以下操作:
from u in session.Query<User>()
where u.Username == username
select u
或
session.Query<User>().Where(u => u.Username == username)
不确定这是不是你要找的。
编辑:Query<T>
是一种扩展方法。不要忘记添加using NHibernate.Linq
才能使用它。
发布于 2011-02-23 03:57:35
没有新的语法。linq仍然是Linq。旧提供程序中名为Linq的方法在新提供程序中命名为Query。
您可以使用enumerable.ToList()来防止使用单独的sql查询加载列表中的每个对象,而不是使用新列表(可枚举)。
https://stackoverflow.com/questions/5083075
复制相似问题