当SaveChanges失败时,您将如何处理或清除添加到数据库的项目。
实施例
db.MyTable.Add(MyModel);
db.SaveChanges();
如果db.SaveChanges()
失败,db.MyTable.Add(MyModel)
添加的数据会发生什么?
我是否需要清除这些添加的项目?如果是这样的话?
当服务尝试更新我可能已手动删除的项目时,它会抛出一个约束问题。
似乎我有人需要撤消在此问题之后添加的这些项目,因此他们不会一遍又一遍地尝试添加同样的错误,因为它会做出同样的错误。
答案 0 :(得分:1)
您可以将 (format t "~&~@(~{~a~^ ~}~)" '(violets are blue))
Violets are blue
电话打包到SaveChanges()
块内:
try...catch
上面的代码检查导致错误的try
{
db.SaveChanges();
}
catch (DbEntityValidationException ex)
{
foreach (DbEntityValidationResult item in ex.EntityValidationErrors)
{
DbEntityEntry entry = item.Entry;
//...
// Rollback changes
switch (entry.State)
{
case EntityState.Added:
entry.State = EntityState.Detached;
break;
case EntityState.Modified:
entry.CurrentValues.SetValues(entry.OriginalValues);
entry.State = EntityState.Unchanged;
break;
case EntityState.Deleted:
entry.State = EntityState.Unchanged;
break;
}
}
}
的{{1}}属性。如果当前状态为“已添加”,则会将其更改为“已分离”。
或者只是覆盖它。
或者你可以覆盖State
电话并做同样的事情。