2012-09-27 42 views
0

我需要臨時修改內存中實體的集合,而不會出現框架爆炸並出現錯誤。我有兩個實體正在與我一起工作。實體A有一個集合,我只需要從中刪除一個項目並添加另一個我創建的項目。實體B使用來自實體A的那個項目來做計算,但沒有在它的任何屬性中持有對它的引用。問題是當我去保存實體B時,它會因爲我在實體A的內存變化而爆炸。我不會試圖保存實體A,框架只是想知道我對它做了更改並拋出此錯誤:保存poco EF時在內存中修改實體沒有錯誤4.2

The relationship could not be changed because one or more of the foreign-key properties is non-nullable

我使用POCO類和單獨保存每個實體,所以我很困惑,爲什麼當我保存實體B框架也試圖挽救實體答波蘇斯都連接好使用EntityTypeConfiguration類,如果這是一個差異。

有沒有辦法告訴個別實體在一段時間內不跟蹤自己?

+0

你是什麼意思「*單獨保存每個實體*」?您只能調用'context.SaveChanges',它總是保存上下文/工作單元中已修改的所有內容。你如何保存「*個人*」實體? – Slauma

回答

0

您應該取得您的實體A而無需跟蹤。隨着DbContext

var aList = context.As.AsNoTracking(); 

ObjectContext(你不使用,但無論如何)

context.As.MergeOption = MergeOption.NoTracking; 
var aList = context.As; 

因此,EF不會跟蹤對A的任何改變,更不用說拯救他們。