告诉EF处理唯一的复合索引

时间:2013-02-19 16:27:31

标签: entity-framework-5

我设置了一个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.

1 个答案:

答案 0 :(得分: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语句)之间插入具有该键的实体,它仍然可能失败。我不知道有什么魔法可以帮你省钱。