Есть ли способ установить режим извлечения для более чем одного объекта, используя linq для nhibernate. Кажется, есть метод расширения, который позволяет мне установить только один объект. Однако мне нужно установить его для более чем одного объекта. Это возможно? Спасибо
Новый провайдер Linq делает это немного по-другому:
var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();
Подробнее здесь: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html
просто используйте его более одного раза.
IList<Entity> GetDataFromDatabase() { var query = session.Linq<Entity>(); query.Expand("Property1"); query.Expand("Property2"); return query.ToList(); }
Насколько я вижу, это не эквивалентно: SetFetchMode увлажняет дерево объектов, а метод Expand извлекает декартово произведение.
В ответ на @Mike Hadlow ответ, выбирая следующий уровень (внуков), вам нужно сделать:
@Mike Hadlow
var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();