Как увлажнить дочерний объект из внутреннего соединения? - PullRequest
0 голосов
/ 24 июня 2011

поэтому у меня есть запрос синтаксиса linq:

var parents = (from p in session.Query<Parent>()
              from c in p.Children
              where c.Name == "John"
              select p).ToList()

, который приводит к следующему выражению select (сокращенно для краткости):

select p.*
from Parents p
inner join Children c
   on p.Id = c.ParentId
where c.Name = 'John'

проблема, с которой я столкнулсяэто то, что хотя и выполняет внутреннее соединение с дочерними объектами, оно не гидратирует коллекцию, которую мне нужно гидратировать.

Если я изменю код на следующий:

var parents = (from p in session.Query<Parent>()
              from c in p.Children
              where c.Name == "John"
              select p).FetchMany(p => p.Children).ToList()

выражение sqlсоздается со вторым соединением (левое внешнее соединение) с таблицей Children.Как мне сказать nhibernate гидрировать родительскую сущность со всеми детьми, не создавая еще одно соединение?

Спасибо ...

1 Ответ

0 голосов
/ 24 июня 2011
List<Parent> parents = Session.Query<Parent>().Fetch(p=> p.Children).ToList();

Предположим, у вас есть родительская коллекция Children с отношением один ко многим.

Для получения более подробной информации о проверке EagerLoadTests.cs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...