2010-12-03 39 views
0

我有兩對多關係的實體。小部件(1)< - >(*)用戶。實體框架 - ObjectContext.DeleteObject()當相關實體孤立時

如果出於某種奇怪的原因,在數據庫中存在一個Widget被刪除的地方,那裏可能沒有外鍵或其他引用約束,如果沒有相應的Widget,將阻止用戶存在,我不能使用EF到ObjectContext.DeleteObject()。該消息是

System.Data.UpdateException: Entities in '<Users>' participate in the '<UsersWidgets>' relationship. 0 related 'Widgets' were found. 1 'Widget' is expected. 
    at System.Data.Mapping.Update.Internal.UpdateTranslator.RelationshipConstraintValidator.ValidateConstraints() 

是否有推薦的方式來處理這個代碼?

謝謝!

回答

1

您應該修改您的實體數據模型(EDM)以符合在數據庫模式中表達的規則。

如果沒有的用戶小工具數據庫中的表和用戶外鍵列可爲空之間任何的借鑑完整性約束,那麼在EDM它們對應的實體之間的關係應該有多個0..1:*(零或一對多)

現在它可能設置爲1:*(一到多)這是造成驗證錯誤,根據一個用戶總是希望有一個確切的相關的Widget至今。

相關資源:

0

這個異常通常會發生,如果你有一個FK用戶到Widgets,它不能在數據庫中爲空。所以你應該檢查的第一件事是,如果FK在用戶上被定義爲可空。 你使用哪個數據庫?我只知道MSSQL Server 2008.如果是這樣,請檢查數據庫中關係上設置的屬性。你可以在一個關係上定義一個UPDATE和DELETE動作。如果您不希望刪除Widget時刪除用戶,則應檢查級聯刪除是否被禁用。還有一個選項可以將用戶上的Widget設置爲空。