回答
這是「按設計」。 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