我使用的是nhibernate 2.1和linq提供程序。我有以下代码:
public IQueryable<T> Query<T>()
{
return Session.Linq<T>();
}
这将允许我运行这样的查询:
IEnumerable<Picture> pictures = Query<Picture>();
我刚刚升级到nhibernate 3.0(这似乎有更成熟的linq功能)和这段代码
Session.Linq<T>
无法编译
我尝试将其替换为:
Session.Query<T>
已编译,但我的所有查询现在返回0条记录。
任何人都可以帮我向我解释这个升级路径,如果我做错了什么?基于this post,此语法应该有效,但似乎总是返回0条记录。
一些额外的信息:我刚刚运行了nhibernate profiler并且它检测到会话但它没有显示正在运行的任何SQL查询。是否有任何理由可以让人想到不会运行任何查询?
答案 0 :(得分:1)
我明白了。问题是一个post build事件,它运行一个脚本将旧版本的nhibernate复制回bin目录
答案 1 :(得分:0)
我不希望IEnumerable图片= Session.Query();执行一些sql,因为声明了一个枚举,但没有执行。 IEnumerable pictures = Session.Query()。ToList();将执行sql。