時,會出現令人討厭的N + 1問題。在執行與另一個聯合實體的聯接時執行criteria.list時,查看我的N + 1查詢的詳細描述。 現在我很無知,也許有人會有一個想法。當調用criteria.List()
這些對象:(正常改名:)) 訂單 - >鍋< - >封面
訂單多到一個相關的鍋。 (所以不同的命令可以指向同一個Pot)。 訂單表有一個「PotId」字段(帶有Pot表的關鍵字)。
Pot是一對一,雙向與Cover相關 - 一方是「一對一」,另一方是「多對一」。 封面有一個「PotId」字段(帶Pot table的鍵)。
問題開始於執行時: session.CreateCriteria(typeof(Order))。CreateAlias(「pot」,「pot」,JoinType.LeftOuterJoin).List();
我得到的是一個查詢獲取訂單+ pots,然後N個查詢獲取封面(通過cover.PotId)。 試圖調整這種方式和其他,但無濟於事。 我認爲這可能與「沒有延遲加載一對一關聯」, 有關,但我無法繞過它。 有什麼想法?將很樂意提供更多信息。
我可以試試,但我更喜歡O(1)DB往返和O(1)查詢的解決方案。 – 2011-05-05 05:30:37