回答
这是“按设计”。 EF只能逐个分离实体,但同时EF不支持由连接和分离的实体组成的对象图。正因为如此,当你分离实体时,它将把所有的关系都打破到附加对象图的其余部分。目前不支持分离整个对象图,但您可以在Data UserVoice上投票支持此功能。
作为解决方法,您可以关闭上下文的延迟加载,使用@CodeWarrior描述的加载加载来加载您需要传递给其他上下文的准确数据。一旦你有数据加载序列化他们流和立即反序列化他们对象图的新实例。这是如何对已分离的实体图进行深度克隆的方式,但所有关系都完好无损(需要关闭延迟加载,否则序列化将加载所有其他导航属性,从而导致预期更大的对象图)。唯一的要求是您的实体必须由您选择的序列化程序进行序列化(注意循环引用通常需要一些特殊处理或实体的附加属性)。
你问的是如何加载子实体?如果是这样,您可以使用.Include方法进行急切的加载。给定一个Person类和那里的人有******中国的集合类******中国,你可以做到以下几点:
List<Person> People = db.People.Where(p => p.Name = "Henry")
.Include("PhoneNumbers")
.ToList();
或者你可以做所谓的显式加载在这里装载的实体和拨打.Load方法在你想要加载的子和相关实体的集合上。一般来说,当你没有启用LazyLoading时,你会这样做(并且LazyLoading在4.0+中默认启用,在以前的版本中不记得)。
无论您如何查询和加载它们,您都必须将要附加到不同上下文的实体分离。
这是一个很不错的MSDN article on loading entities的链接。
感谢您的回复! – James 2011-12-15 03:11:44
没问题。请记住投票支持你的帖子。 – CodeWarrior 2011-12-15 05:53:56
- 1. 实体框架加载相关实体
- 2. 实体框架:更新相关实体
- 3. 实体框架 - 渴望加载相关实体的相关实体
- 4. 使用实体框架4.0更新分离的实体实例
- 5. 实体框架相同的实体
- 6. 实体框架 - 关联实体问题
- 7. 建模相关的实体与SQL Server和实体框架
- 8. 分离实体框架poco和objectcontext
- 9. 实体框架实体json
- 10. DDD,实体框架和实体映射
- 11. 实体框架 - 在分离实体后恢复导航属性
- 12. 实体框架中的递归实体分离
- 13. 奇怪,实体框架是节省分离实体正确
- 14. 实体框架 - ObjectContext处置时分离实体吗?
- 15. 实体框架6月CTP 2011和实体框架4.2之间的相关性?
- 16. 实体框架实体没有显示相关实体的属性
- 17. 实体框架 - 急切加载相关实体
- 18. 使用相关实体更新实体框架
- 19. 删除实体框架中的所有相关实体
- 20. 对实体框架中所需相关实体的验证
- 21. 实体框架 - ObjectContext.DeleteObject()当相关实体孤立时
- 22. 实体框架7 - 访问相关实体
- 23. 在实体框架中选择的不是非相关实体
- 24. 实体框架CTP5重新加载相关实体
- 25. 使用include加入实体框架中的相关实体
- 26. 更新相关实体的实体框架的DbContext
- 27. 实体框架 - 替换相关实体不包括
- 28. 如何加载相关的实体与实体框架核心
- 29. 使用实体框架加载相关实体6
- 30. 实体框架入门负载相关的实体
你是什么意思*“相关实体全部离开”*? – Yuck 2011-12-14 17:53:26