NHibernate-为什么未初始化/获取此集合?
考虑到这一点:NHibernate-为什么未初始化/获取此集合?,nhibernate,eager,Nhibernate,Eager,考虑到这一点: var pfs = Session.QueryOver<Pegfile>() .JoinAlias(pf => pf.Responses, () => responseAlias) .List(); 为什么调试语句会让NHibernate返回并重新查询响应集合,因为它肯定是在第一次查询中初始化的?每次都会得到我,为什么我不记得了加入必须是一个左撇子-grr爱与恨NH的比例相等 var pfs
var pfs = Session.QueryOver<Pegfile>()
.JoinAlias(pf => pf.Responses, () => responseAlias)
.List();
为什么调试语句会让NHibernate返回并重新查询响应集合,因为它肯定是在第一次查询中初始化的?每次都会得到我,为什么我不记得了加入必须是一个左撇子-grr爱与恨NH的比例相等
var pfs = Session.QueryOver<Pegfile>()
.Left.JoinAlias(pf => pf.Responses, () => responseAlias)
.List();
var pfs=Session.QueryOver()
.Left.JoinAlias(pf=>pf.Responses,()=>responseAlias)
.List();
您需要使用Fetch
预加载集合:
var pfs = Session.QueryOver<Pegfile>()
.JoinAlias(pf => pf.Responses, () => responseAlias)
.Fetch(pf => pf.Responses).Eager
.List();
var pfs=Session.QueryOver()
.JoinAlias(pf=>pf.Responses,()=>responseAlias)
.Fetch(pf=>pf.Responses)
.List();
JoinAlias
为集合添加别名,以便您可以在where子句中引用它,等等
我不确定QueryOver是否正确,但LINQ提供程序还使用了一些会导致集合无法加载的优化,例如在调用COUNT
时发出SQL聚合COUNT
查询
var pfs = Session.QueryOver<Pegfile>()
.JoinAlias(pf => pf.Responses, () => responseAlias)
.Fetch(pf => pf.Responses).Eager
.List();