2013-02-17 2 views
4

Если сущность сопоставлена ​​с отношением к другому объекту как Lazy = False, но для определенной функции мне нужно получить их все Ленько, это возможно сделать во время выполнения?Lazy Инициализация в NHibernate

+4

Это гораздо легче сделать наоборот ... –

+3

Вы уверены, что «Ленивый» является то, что вы хотите? Лично мне не нужно было отключать его. На практике вы, скорее всего, будете использовать 'fetch =" join "для автоматического получения определенных ассоциаций. И *, что * можно контролировать в запросах критериев и QueryOver, используя 'SetFetchMode (..., FetchMode.Lazy)' (критерии) или 'Fetch (...). Lazy' (QueryOver). BTW, +1 по умолчанию для ленивого поведения. Вы можете * включить * join-fetching во всех API-интерфейсах, но AFAIK не может явно отключить его в LINQ. –

ответ

3

Нет, вы не можете. Как отмечали комментаторы, вы можете отобразить его как ленивый и получать с нетерпением, но не наоборот.

I.e. в LINQ вы можете получить отношения с жадностью Fetch/FetchMany/ThenFetch/ThenFetchMany:

session.Query<Parent>() 
    .Where(x => x.Name == "Ruba") 
    .FetchMany(x => x.Children) 
    .ThenFetch(x => x.SomethingMore); 
Смежные вопросы