以下代码导致间歇性异常:
public int UnblockJob(int jobId)
{
using (var connect = MakeConnect())
{
var tag = connect.JobTag.SingleOrDefault(jt => jt.JobId == jobId && jt.Name == Metrics.TagNameItemBlockCaller);
if (tag == null)
{
return 0;
}
connect.JobTag.Remove(tag);
return connect.SaveChanges();
}
}我如何纠正或排除它?
发布于 2015-02-22 17:30:35
来自DbUpdateConcurrencyException的文档
当预期实体的
DbContext的SaveChanges将导致数据库更新时抛出的异常,但实际上数据库中的任何行都没有受到影响。
这意味着您试图删除的记录已经从数据库中删除。看起来,您有另一个进程正在删除记录,或者这个函数可以并发调用。
有几个解决方案,这里有几个:
修复源问题停止影响数据的其他进程。
捕获错误将此方法包装在try/catch块中,毕竟您可能只关心记录已被删除:
try
{
//Existing code here
}
catch(DbUpdateConcurrencyException)
{
//Safely ignore this exception
}
catch(Exception e)
{
//Something else has occurred
throw;
}https://stackoverflow.com/questions/28660708
复制相似问题