zoukankan      html  css  js  c++  java
  • [转]LINQ SubmitChanges方法 (并发处理)

    // 如果主键也并发修改了,会报错

    用数据库的新值回添客户端

    try

    {

    // 表示即使发生冲突也要继续

    a.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);

    // 表示只要发生冲突就不再继续

    // a.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);

    // a.SubmitChanges();

    }

    catch (System.Data.Linq.ChangeConflictException ex)

    {

    foreach (System.Data.Linq.ObjectChangeConflict occ in a.ChangeConflicts)

    {

    DBItem p = (DBItem)occ.Object;

    // 以当前客户端中的值为准

    //occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);

    // 以当前数据库中的值为准

    // occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);

    // 如果数据库中的值没有发生变化,则以当前客户端中的值为准。否则,则以当前数据库中的值为准

    //occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);

    foreach (System.Data.Linq.MemberChangeConflict mcc in occ.MemberConflicts)

    {

    // 当前客户端中的值

    string currentValue = mcc.CurrentValue.ToString();

    // 原来数据库中的值

    string originalValue = mcc.OriginalValue.ToString();

    // 当前数据库中的值

    string databaseValue = mcc.DatabaseValue.ToString();

    Console.WriteLine("当前客户端中的值:{0},原来数据库中的值:{1},当前数据库中的值:{2}", currentValue, originalValue, databaseValue);

    // 以当前客户端中的值为准

    mcc.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);

    // 以当前数据库中的值为准

    // mcc.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);

    // 如果数据库中的值没有发生变化,则以当前客户端中的值为准。否则,则以当前数据库中的值为准

    // mcc.Resolve(System.Data.Linq.RefreshMode.KeepChanges);

    }

    }

  • 相关阅读:
    windows pm2 开机启动
    微信小程序自定义组件封装及父子间组件传值
    cloc 统计代码行数工具
    小程序获取当前页面路径url
    小程序navigator点击有时候会闪一下
    Centos7安装python3与Python2共存
    Docker配置国内官方镜像
    Centos7下Docker的安装与使用
    Centos7yum源修改为国内阿里源
    Vim下一键运行python代码
  • 原文地址:https://www.cnblogs.com/zhcnblog/p/2660156.html
Copyright © 2011-2022 走看看