我已经在这里待了几个小时,所以我不确定我是否太累了,或者我只是错过了什么......
我试图使用EF7.0加载此图表的整个路径,并且我没有通过编译器!有人会非常友好地给我提供包含这条路径的语法糖吗?
给定一个UserTopic - 我需要将所有相关实体加载到Vector!
答案 0 :(得分:2)
你链接包括:
dbContext.UserTopics.Include(x => x.UserTopicProfile).ThenInclude(...)....ThenInclude(x => x.Vector);
答案 1 :(得分:1)
好的我的例子和问题(我可能措辞得更好)。我需要返回UserTopic,并显示加载的对象图。所以当我在EF6中做过很多次的时候,我很开心。
UserTopic queryUT = dbContext.UserTopics.FirstorDefault(ut => ut.UserTopicID = 1).Include(... #FAIL
好的..另一次尝试
var queryUT = dbContext.UserTopics
.Where(ut => ut.UserTopicID = 1)
.Include ... #FAIL (start include with a collection
列表继续......解决......
public void ProcessUserTopic(dbContext pdbContext, UserTopic pUserTopic)
var queryUT = 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 / .Then Include语句),然后过滤。此外,一旦在一个实体上被隔离,您就无法展开对象图 - 因为它只会返回空值,即使数据库有值(我知道,延迟加载不在EF7中)。但是,在隔离到一个实体之后,我本以为我可以遍历图形(我很确定它是从EF6改变的)。