2016-07-28 137 views
1

我一直在這個幾個小時,所以我不知道如果我太累了,或者我只是失去了一些東西...EF7。包括問題

我想要使用EF7.0加載此圖的整個路徑,並且我沒有通過編譯器!請問有人給我的語法糖來包括這個路徑?

enter image description here

給定一個UserTopic - 我需要所有相關的實體加載到矢量!

回答

1

好吧在我的例子和問題(我可能會一直措辭更好)。我需要返回一個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的一個變化)。

+0

很高興聽到問題解決+1 –

2

您的鏈接包括:

dbContext.UserTopics.Include(x => x.UserTopicProfile).ThenInclude(...)....ThenInclude(x => x.Vector); 
+0

這不是我正在尋找的完整答案,但它讓我開始了正確的道路,就像你從上下文開始的那樣! – codeputer