У меня есть класс с картой ReferencesAny.Для определенных запросов я получаю ситуацию 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], Quote ((p,) => (.Any [wp.cms.DomainModel.Entity.Users.UserSite] (p.Site.Users, (u,) =>(Guid.op_Equality (u.User.Id, p1)),))),), Quote ((p,) => (p.Page)),)] Описание: необработанное исключение произошло во время выполнения текущеговеб-запрос.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: 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], Quote ((p,) => (.Any [wp.cms.DomainModel.Entity.Users.UserSite] (p.Site.Users, (u,) => (Guid.op_Equality (u.User.Id, p1)),))),), Цитата ((p,) => (p.Page)),)]