zoukankan      html  css  js  c++  java
  • linq更新数据冲突问题解决

    linq更新数据时,产生冲突,出现类似 "找不到行或行已更改" 的错误。

    解决方法:

    在提交的时候,不要SubmitChanges()直接提交,采用如下方式

    using (DataContext dc = new DataContext(Common.GetDBConnStr()))
                {
                    try
                    {
                        Permissions.Modal.Module module = (from mod in dc.GetTable<Permissions.Modal.Module>()
                                                           where mod.ID == id
                                                           select mod)
                                      .FirstOrDefault<Permissions.Modal.Module>();
                        module.Name = moduleName;
                        module.State = state;
                        dc.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
                        return true;
                    }
                    catch (System.Data.Linq.ChangeConflictException)
                    {
                        foreach (System.Data.Linq.ObjectChangeConflict occ in dc.ChangeConflicts)
                        {
                            //以下是解决冲突的三种方法,选一种即可
     
                            // 使用当前数据库中的值,覆盖Linq缓存中实体对象的值
                            //occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
     
                            // 使用Linq缓存中实体对象的值,覆盖当前数据库中的值
                            //occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);
     
                            // 只更新实体对象中改变的字段的值,其他的保留不变
                            occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);
                        }
     
                        // 这个地方要注意,Catch方法中,我们前面只是指明了怎样来解决冲突,这个地方还需要再次提交更新,这样的话,值 //才会提交到数据库。
                        dc.SubmitChanges();
                        return true;
                    }
                    catch (Exception) { return false; }
                }
    

    或者更简单的方式是,对需要更新的字段在实体类中加如下限制:[Column(UpdateCheck=UpdateCheck.Never)]

  • 相关阅读:
    c#dalegate invoke及AsyncCallback使用
    wpf ProgressBar使用
    gridcontrol如何根据值来动态设置某一行的颜色
    JS判断客户端是否是iOS或者Android
    React Native视频播放(iOS)
    js中Math()函数&&数据类型转换
    在Mac OS X上安装Ionic
    Umbraco列表分页
    angularJs中图表功能(有集成框架)-angular-flot
    React Native开发环境搭建
  • 原文地址:https://www.cnblogs.com/kinpauln/p/1809108.html
Copyright © 2011-2022 走看看