回答
這是「按設計」。 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. 實體框架:更新相關實體
- 5. 實體框架:獲取相關實體
- 6. 實體框架 - 渴望加載相關實體的相關實體
- 7. 使用實體框架4.0更新分離的實體實例
- 8. 實體框架相同的實體
- 9. 實體框架列 - 實體關聯?
- 10. 實體框架 - 關聯實體問題
- 11. 建模相關的實體與SQL Server和實體框架
- 12. 分離實體框架poco和objectcontext
- 13. 實體框架:實體
- 14. 實體框架實體
- 15. 實體框架實體json
- 16. 實體框架,外鍵和實體鍵
- 17. DDD,實體框架和實體映射
- 18. 實體框架和MySql更新實體
- 19. 實體框架 - 在分離實體後恢復導航屬性
- 20. 奇怪,實體框架是節省分離實體正確
- 21. 實體框架 - 保存對分離實體所做的更改
- 22. 實體框架中的遞歸實體分離
- 23. 在實體框架中保存分離的實體6
- 24. 管理分離的實體與實體框架
- 25. 實體框架 - ObjectContext處置時分離實體嗎?
- 26. 實體框架6月CTP 2011和實體框架4.2之間的相關性?
- 27. 使用實體框架與POCO實體相關實體中的重複行
- 28. 實體框架將實體序列化爲包含相關實體的JSON
- 29. 實體框架實體沒有顯示相關實體的屬性
- 30. 更新實體和相關實體
你是什麼意思*「相關實體全部離開」*? – Yuck 2011-12-14 17:53:26