现在的位置: 首页 > 综合 > 正文

Linq to Sql : 并发冲突及处理策略

2013年05月08日 ⁄ 综合 ⁄ 共 817字 ⁄ 字号 评论关闭

1、 通过覆盖数据库值解决并发冲突

try
{
    db.SubmitChanges(ConflictMode.ContinueOnConflict); //需要指定为ConflictMode.ContinueOnConflict
}
catch (ChangeConflictException e)
{
 
    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
    {
        occ.Resolve(RefreshMode.KeepCurrentValues); //保留当前值,覆盖数据库中的值
    }
}

2 、通过保留数据库值解决并发冲突

try
{
    db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
    {
        occ.Resolve(RefreshMode.OverwriteCurrentValues);//以数据库中的值,重写当前值
    }
}
db.SubmitChanges(ConflictMode.FailOnFirstConflict); //处理完冲突后,重试

3、通过与数据库值合并解决并发冲突

try
{
    db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
    {
        occ.Resolve(RefreshMode.KeepChanges);//保留数据库中的值和当前值,进行合并处理
     }
}
db.SubmitChanges(ConflictMode.FailOnFirstConflict); //处理完冲突后,重试

抱歉!评论已关闭.