0

テーブル内で一意でなければならない 3 列のインデックスを設定しました。どうすればEFにそれを伝えることができますか? 現在DbUpdateException、変更を保存しようとするとエラーが発生します。

Cannot insert duplicate key row in object 'sm.SkillAssignations' with unique index 'IX_SkillAssignations'. The duplicate key value is (8285, 1, 2, 2).\r\nThe statement has been terminated.

4

1 に答える 1

1

例外を回避するには、挿入する一意のインデックス値を持つエンティティが既に存在するかどうかを確認します。

if (!context.SkillAssignations.Any(s =>
        s.Value1 == newSkillAssignation.Value1 &&
        s.Value2 == newSkillAssignation.Value2 &&
        s.Value3 == newSkillAssignation.Value3))
    context.SkillAssignations.Add(newSkillAssignation);
else
    // your own error handling
    // - or do you want to UPDATE the existing entity in this case?

他の誰かがAny呼び出し (EXISTS クエリ) とAdd(INSERT ステートメント) の間にそのキーを持つエンティティを挿入すると、失敗する可能性があります。この小切手を節約する魔法を私は知りません。

于 2013-02-19T19:17:17.087 に答える