Я нашел 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();