2010-12-03 23 views
0

多対1の関係に2つのエンティティがあります。ウィジェット(1)< - >(*)ユーザー。関連エンティティが孤立している場合のEntity Framework - ObjectContext.DeleteObject()

データベースにウィジェットが削除されていて、対応するウィジェットが存在しない場合にユーザーが存在しないような外部キーや他の参照制約がない場合は、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)をデータベーススキーマで表現された規則に準拠させるように変更する必要があります。

NULL可能なデータベース内ユーザーウィジェットテーブルとユーザーの外部キー列間のいずれかのreferencial整合性制約が存在しない場合は、EDMの対応するエンティティ間の関連は持つべきです多重度0..1:*(ゼロまたは1対多数)

は今のところ、それはおそらく1に設定されています:*(1対多)ユーザーは常に1つの関連するウィジェットを持つことが期待されていることによるため、検証エラーの原因となっているを。

関連リソース:

0

この例外は通常、ユーザーがウィジェットにFKを持っている場合に発生します。このFKは、DB内でヌル入力可能ではありません。したがって、FKがユーザーに対してNULL値として定義されている場合は、最初に確認する必要があります。 どのデータベースを使用していますか?私はMSSQL Server 2008のみを認識しています。もしそうなら、どのプロパティがデータベースの関係に設定されているかを確認してください。リレーションに対してUPDATEおよびDELETEアクションを定義できます。ウィジェットが削除されたときにユーザーを削除したくない場合は、カスケード削除が無効になっているかどうかを確認する必要があります。また、ユーザーのウィジェットをnullに設定するオプションもあります。

関連する問題