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