1、 通过覆盖数据库值解决并发冲突
try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict); //需要指定为ConflictMode.ContinueOnConflict
}
catch (ChangeConflictException e)
{
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
occ.Resolve(); //保留当前值,覆盖数据库中的值
}
}
2 、通过保留数据库值解决并发冲突
try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
occ.Resolve(RefreshMode.OverwriteCurrentValues);//以数据库中的值,重写当前值
}
}
db.SubmitChanges(); //处理完冲突后,重试
3、通过与数据库值合并解决并发冲突
try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
occ.Resolve(RefreshMode.KeepChanges);//保留数据库中的值和当前值,进行合并处理
}
}
db.SubmitChanges(); //处理完冲突后,重试