我有一个带有ReferencesAny地图的课程。对于某些查询,我最终在Any Map上出现N + 1情况。有没有办法将Fetch用于任何地图?
这是我的linq查询的样子(这样可行,但由于N + 1而导致性能不佳):
return Session.Query<Path>().Where(p => {condition}).ToArray().Select(p => p.ContentsObject);
当我在混音中添加一个提取时:
return Session.Query<Path>().Where(p => {condition}).Fetch(p => p.ContentsObject).Select(p => p.ContentsObject);
查询爆炸说有一个无效的连接。
例外:
无效的连接:p.Page [.Fetch [wp.cms.DomainModel.Entity.Structure.PagePathMemento,wp.cms.DomainModel.Entity.Base.ILocatablePage](。[wp.cms.DomainModel.Entity.Structure] .PagePathMemento](NHibernate.Linq.NhQueryable`1 [wp.cms.DomainModel.Entity.Structure.PagePathMemento],引用((p,)=&gt;(。任何[wp.cms.DomainModel.Entity.Users.UserSite] (p.Site.Users,(u,)=&gt;(Guid.op_Equality(u.User.Id,p1)),))),),Quote((p,)=&gt;(p.Page)) ,)] 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:NHibernate.Hql.Ast.ANTLR.InvalidPathException:无效的连接:p.Page [.Fetch [wp.cms.DomainModel.Entity.Structure.PagePathMemento,wp.cms.DomainModel.Entity.Base.ILocatablePage] (。[wp.cms.DomainModel.Entity.Structure.PagePathMemento](NHibernate.Linq.NhQueryable`1 [wp.cms.DomainModel.Entity.Structure.PagePathMemento],引用((p,)=&gt;(。任何人) [wp.cms.DomainModel.Entity.Users.UserSite](p.Site.Users,(u,)=&gt;(Guid.op_Equality(u.User.Id,p1)),))),),引用( (p,)=&gt;(p.Page)),)]
答案 0 :(得分:4)