我第一次使用NHibernate,在这一行中它为我抛出异常
var total = session
.QueryOver<Comment>().Where(p => p.Entry.Author == username)
.ToRowCountQuery()
.FutureValue<int>();
var results = session
.QueryOver<Comment>().Where(p => p.Entry.Author == username)
.Fetch(x => x.Entry).Eager()
.OrderBy(x => x.Posted).Desc()
.Skip(skip)
.Take(take)
.List();例外是
无法解析属性: Entry.Author of: FunnelWeb.Model.Comment
我想问题是Entry对象在这里没有加载。我怎么才能用Nhibernate来耍这个把戏呢?
发布于 2012-06-08 14:08:39
QueryOver只是标准的强类型包装器,不允许隐式深度引用。
你得用:
session.QueryOver<Comment>()
.JoinQueryOver(x => x.Entry)
.Where(x => x.Author == username)或者您可以使用Query<> (LINQ),它将与您尝试过的语法一起工作。
发布于 2012-06-08 14:18:32
你需要JoinAlias或JoinQueryOver。下面有一个关于如何使用未来查询的例子.
Entry entryAlias = null;
var q = session.QueryOver<Comment>()
.JoinAlias(x => x.Entry, () => entryAlias)
.Where(() => entryAlias.Author == username);
var totalFuture = q.ToRowCountQuery().FutureValue<int>(); //ToRowcountQuery clones the query, we can reuse it for results
var resultsFuture = q
//.Fetch(x => x.Entry).Eager() //already joined
.OrderBy(x => x.Posted).Desc()
.Skip(skip)
.Take(take)
.Future<Comment>();
var results = resultsFuture.ToList(); //both future queries are executed in the same batch
var total = totalFuture.Value;https://stackoverflow.com/questions/10950179
复制相似问题