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);

    }

    }

  • 相关阅读:
    全选和选项交互
    无法将类型为excel.applicationclass的com 强制转换为接口类型的解决方法[转]
    SilverLight搭建WCF聊天室详细过程[转]
    进程与线程的一个简单解释
    Visiual Studio CLR20r3
    C#注册表操作类--完整优化版
    cmd注册外部命令
    C# Dsofile.dll无法注册运行问题解决
    .net版,微信免充值代金卷业务开通验收代码
    C#十进制与任意进制的转换
  • 原文地址:https://www.cnblogs.com/zhcnblog/p/2660156.html
Copyright © 2011-2022 走看看