С нетерпением ждать несколько свойств коллекции (используя QueryOver / Linq)?

Я нашел 2 похожих вопроса:

Согласно эта страница :

Будьте осторожны, чтобы не получить несколько свойств коллекции в то же время. Хотя это заявление будет работать нормально:

 var employee = session.Query  ()
 .Fetch (e => e.Subordinates)
 .Fetch (e => e.Orders) .ToList ();

Выполняет запрос произведения в декартовой системе координат. против базы данных, поэтому общая количество возвращаемых строк будет общее количество подчиненных, умноженное на общее заказов.

Допустим, у меня есть следующая модель:

public class Person
{
    public virtual int Id { get; private set; }
    public virtual ICollection Books { get; set; }
    public virtual ICollection
Articles { get; set; } public virtual ICollection
Addresses { get; set; } }

Каков самый простой способ с нетерпением загрузить всех людей их книгами, статьями и адресами с помощью QueryOver / Linq (без возврата декартовых продуктов)?

Спасибо


Обновление:

См. cremor ответ ниже и Флориан Лим ответ в этой ветке . Следующий код работает нормально, только одно обращение к базе данных.

var persons = session.QueryOver()
    .Future();
var persons2 = session.QueryOver()
    .Fetch(x => x.Books).Eager
    .Future();
var persons3 = session.QueryOver()
    .Fetch(x => x.Articles).Eager
    .Future();
var persons4 = session.QueryOver()
    .Fetch(x => x.Addresses).Eager
    .Future();

35
задан Community 23 May 2017 в 12:00
поделиться