2013-02-17 83 views
4

如果一個實體與另一個實體的關係映射爲Lazy = False,但是對於某個函數,我需要將它們全部都懶懶地提取出來,是否可以在運行時執行?NHibernate中的惰性初始化

+4

這是很容易做相反...... – 2013-02-17 11:02:38

+3

確定「懶」是你想要什麼?就我個人而言,我不需要禁用它。在實踐中,你更可能使用'fetch =「join」'來自動檢索特定的關聯。並且*可以使用'SetFetchMode(...,FetchMode.Lazy)'(條件)或'Fetch(...)。Lazy'(QueryOver)在條件查詢和QueryOver中控制*。順便說一句,默認爲懶惰行爲+1。您可以在所有API中啓用* join-fetching,但AFAIK無法在LINQ中明確禁用它。 – 2013-02-17 11:23:11

回答

3

不,你不能。正如評論者所指出的那樣,你可以將它映射爲懶惰並且熱切地獲取,但不是相反。

I.e.在LINQ可以用Fetch/FetchMany/ThenFetch/ThenFetchMany預先抓取關係:

session.Query<Parent>() 
    .Where(x => x.Name == "Ruba") 
    .FetchMany(x => x.Children) 
    .ThenFetch(x => x.SomethingMore);