我有一系列映射到它們各自的數據庫對象的類。如何使用nHibernate中的FetchMode獲取單層關聯表
在映射中,設置獲取模式以便關聯的查找與父記錄一起加載。
我現在正在引用這些對象中的一些,因此我顯然獲得了熱切加載的關聯記錄。
如果可能的話,我不想使用延遲加載,因爲我從服務層傳遞這些對象 - 並不理想,但我希望我可以在查詢級別處理這個問題。
拿這個例子:
var c = s.CreateCriteria(typeof(Transaction))
.Add(Restrictions.Eq("Id", myId))
.SetFetchMode("Remark", FetchMode.Join)
.SetFetchMode("Category", FetchMode.Join)
.SetFetchMode("Reason", FetchMode.Join);
var t = c.List<Transaction>().FirstOrDefault();
備註有許多與其相關的記錄,這些都是目前正在加載當我運行此查詢。
你可以修改ICriteria以防止參考實體加載它們的關聯嗎?
在這個例子中,我只希望Transction及其直接相關的備註,類別和原因
感謝
根據此http: //stackoverflow.com/q/3199032/1236044使用別名,我想你可能會嘗試重寫從Eager到Lazy的兒童屬性的FetchMode。可能有很多屬性可以覆蓋... – jbl
我認爲將lazy和fetch單獨放在映射中通常會更好,並且在查詢級別處理它們 - 就像您試圖做。我認爲只要這樣設置映射,你就不會這樣做。 –