簡體   English   中英

NHibernate提取創建正確的查詢,然后執行N + 1

[英]NHibernate fetch creates right query and then performs N+1

我有三個實體,配置為

Contact
  HasOne(e => e.User).PropertyRef(e => e.Contact).Cascade.All();

User
  HasMany(e => e.Requests);
  References(e => e.Contact);

Request
  References(e => e.User);

然后我這樣查詢:

  CurrentSession.Query<Request>()
                .Fetch(x => x.User)
                .ThenFetch(x => x.Contact)
                .ToList();

看起來Fetch正在運行,因為在第一個選擇中,我看到了所有連接的表(為簡潔起見,省略了其他字段):

SELECT request0_.Id                 as Id128_0_,
   user1_.Id                       as Id131_1_,
   contact2_.Id                    as Id77_2_,
FROM   requests request0_
   left outer join users user1_
     on request0_.user_id = user1_.Id
   left outer join contacts contact2_
     on user1_.contact_id = contact2_.Id

然后由於某些原因遵循N + 1選擇,我不明白,也不知道如何解決此問題:

SELECT user0_.Id                as Id131_0_,
FROM   users user0_
WHERE  user0_.contact_id = 200 /* @p0 - contact_id */

目前,這是NHibernate中的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM