无法解析属性: 属性名称: NHibernate 中的类错误
本文关键字:属性 错误 NHibernate | 更新日期: 2023-09-27 18:36:46
我第一次使用 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();
例外情况是
无法解析属性:条目。作者:FunnelWeb.Model.Comment
我想,问题是Entry
对象没有加载到这里。我怎样才能用Nhibernate做这个把戏?
QueryOver 只是 Criteria 的强类型包装器,不允许隐式深度引用。
您必须使用:
session.QueryOver<Comment>()
.JoinQueryOver(x => x.Entry)
.Where(x => x.Author == username)
或者,您可以改用Query<>
(LINQ),它将与您尝试过的语法一起使用。
你需要
加入别名或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;