Да ... просто установите правильный режим fetchmode.
Я включу пример через минуту.
Пример взят from here =>
IList cats = sess.CreateCriteria(typeof(Cat))
.Add(Expression.Like("Name", "Fritz%"))
.SetFetchMode("Mate", FetchMode.Eager)
.SetFetchMode("Kittens", FetchMode.Eager)
.List();
Вы можете указать нетерпеливого нагрузки ребенка ребенку тоже =>
.SetFetchMode("Kittens.BornOn", FetchMode.Eager)
В случае, если вы используете Linq для NHibernate, использование Развернуть метод =>
var feedItemQuery = from ad in session.Linq<FeedItem>().Expand("Ads")
where ad.Id == Id
select ad;
И я бы рекомендовал использовать вспомогательный метод, который создает строку из переданного выражения лямбда.
Вполне вероятно, что можно указать Критерии загрузки всего дерева. Но я не знаю об этом, и я предпочитаю указать, что именно мне нужно (кажется, опасно загружать все).
Помогает ли this?
Я знаю, что могу загружать коллекции, связанные с сущностью, используя FetchMode, но я хочу загрузить все дерево, а не только следующий уровень. Используя свой подход, я хотел бы сделать: .SetFetchMode ("Дети", FetchMode.Join) .SetFetchMode ("Children.Children", FetchMode.Join) .SetFetchMode ("Children.Children.Children", FetchMode.Join) и т. Д. – Argons