2010-11-12 177 views
2

當標記要刪除的實體並保存更改時,有時由於外鍵約束導致操作失敗。在這種情況下,我通知用戶並刷新實體。問題是實體沒有完全刷新 - 其外鍵保持空白。實體框架刷新實體不刷新其外鍵

例如:

//EditableEntity.SomeCollection --> Populated... 

ContextManager.CurrentObjectContext.DeleteObject(EditableEntity); 

try 
{ 
    ContextManager.CurrentObjectContext.SaveChanges(); 
} 
catch (Exception err) 
{ 
    ContextManager.CurrentObjectContext.Refresh(System.Data.Objects.RefreshMode.StoreWins, EditableEntity); 
} 

//EditableEntity.SomeCollection --> Empty!! 

請幫幫忙,謝謝 , 奧蘭

+0

一些幫助嗎? – OrPaz 2010-11-16 08:11:04

回答

1

好,似乎重現了EDM,並重建項目後,上面的程序工作正常。

總結解決方案:標記要刪除的對象時,其行爲與從對象上下文中「分離」,失去其相關的父級和集合,但實際上仍處於「附加」狀態。如果因任何原因取消刪除操作,則此對象相關對象和集合的使用將引發異常。爲了解決這個問題,我們需要將對象「附加」回對象上下文。問題是該對象仍被標記爲「附加」。

爲了解決這個問題簡單地使用刷新對象:

ContextManager.CurrentObjectContext.Refresh(RefreshMode.StoreWins, item); 

希望它能幫助, 奧蘭