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

    }

    }

  • 相关阅读:
    JZ36 两个链表的第一个公共结点
    程序员的表达能力
    Git学习(2)-使用Git 代码将本地文件提交到 GitHub
    初识模块
    三元表达式、递归、匿名函数
    CSRF
    XSS前置课程--同源策略
    XSS
    SQL注入基础入门
    Linux下ettercap的安装,make安装软件步骤
  • 原文地址:https://www.cnblogs.com/zhcnblog/p/2660156.html
Copyright © 2011-2022 走看看