我试图在表中插入许多记录,并且此表具有唯一约束,因此,如果一个用户尝试添加具有相同唯一值的新记录,则会得到dbUpdateException。
但我想知道如何跳过此错误并尝试添加第一个用户尝试添加到表中的剩余记录。
怎么做?
感谢。
答案 0 :(得分:2)
一种方法可能是捕获DbUpdateException,并使用其Entries属性从上下文中删除重复的实体。
然后您可以重试保存 - 冲洗并重复 - 最终将保存所有非重复实体。
E.g。
var duplicates = new List<MyEntity>();
...
catch(DbUpdateException ex)
{
ex.Entries.Each(e => DbContext.Entry(e).State = EntityState.Detached;
duplicates.Add(ex.Entries);
ReTrySave(); // do whatever you need todo to re-enter your saving code
}
...
// Report to user the duplicate entities
ReportToUser(duplicates);
注意 - 将其视为伪代码,因为我没有尝试编译此代码段。