我一直在這個幾個小時,所以我不知道如果我太累了,或者我只是失去了一些東西...EF7。包括問題
我想要使用EF7.0加載此圖的整個路徑,並且我沒有通過編譯器!請問有人給我的語法糖來包括這個路徑?
給定一個UserTopic - 我需要所有相關的實體加載到矢量!
我一直在這個幾個小時,所以我不知道如果我太累了,或者我只是失去了一些東西...EF7。包括問題
我想要使用EF7.0加載此圖的整個路徑,並且我沒有通過編譯器!請問有人給我的語法糖來包括這個路徑?
給定一個UserTopic - 我需要所有相關的實體加載到矢量!
好吧在我的例子和問題(我可能會一直措辭更好)。我需要返回一個UserTopic,並顯示加載的對象圖。所以,關我去我的快樂的同時,我在EF6已經做過很多次..
UserTopic queryUT = dbContext.UserTopics.FirstorDefault(ut => ut.UserTopicID = 1).Include(... #FAIL
OK ..另一種嘗試
var queryUT = dbContext.UserTopics.Where(ut => ut.UserTopicID = 1).Include ... #FAIL (start include with a collection
這樣的例子不勝枚舉... ...分辨率
public void ProcessUserTopic(dbContext pdbContext, UserTopic pUserTopic)
var qeuryUT= pdbContext.UserTopics
.Include(lpUserTopic => lpUserTopic.UserTopicInteractions)
.ThenInclude(lpUserTopInteraction => lpUserTopInteraction.Interaction)
.ThenInclude(lpInteraction => lpInteraction.InteractionProfile)
.ThenInclude(lpProfile => lpProfile.ProfileVectors)
.ThenInclude(lpProfileVector => lpProfileVector.Vector)
.FirstOrDefault(lpUserTopic => lpUserTopic.UserTopicID == pUserTopic.UserTopicID)
請注意,我無法遍歷對象圖,只需傳入userTopic,然後遍歷圖即可。我必須回到dbContext,包含對象圖FIRST,然後過濾已通過的用戶主題。
過去,我隔離了我先要的東西,然後遍歷了對象圖(所以我依靠延遲加載)。如果我想加載,我在過濾器之後。
在EF7中,您必須總是遍歷FIRST對象樹(使用多個.Include /。然後包含語句),然後進行過濾。另外,一旦在一個實體上被隔離,你不能展開對象圖 - 因爲它只會返回空值,即使DB有值(我知道,惰性加載不在EF7中)。然而,我想我可以遍歷圖形,在隔離後只有一個實體(我敢肯定是EF6的一個變化)。
您的鏈接包括:
dbContext.UserTopics.Include(x => x.UserTopicProfile).ThenInclude(...)....ThenInclude(x => x.Vector);
這不是我正在尋找的完整答案,但它讓我開始了正確的道路,就像你從上下文開始的那樣! – codeputer
很高興聽到問題解決+1 –