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 回答