linq更新数据冲突问题解决
2010-08-26 14:57
281 查看
linq更新数据时,产生冲突,出现类似 "找不到行或行已更改" 的错误。
解决方法:
在提交的时候,不要SubmitChanges()直接提交,采用如下方式
或者更简单的方式是,对需要更新的字段在实体类中加如下限制:[Column(UpdateCheck=UpdateCheck.Never)]
解决方法:
在提交的时候,不要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)]
相关文章推荐
- linq to sql统一更新方法,直接返回更新的对象(解决更新后再刷新数据错误显示问题)
- linq更新部分数据时遇到的问题及解决办法
- linq更新部分数据时遇到的问题及解决办法
- 同步DataContext,解决linq to sql更新数据的问题
- 使用dbms_rectifier_diff解决高级复制中的数据冲突问题
- 用SynchronizationContext解决界面的更新线程数据问题
- 解决业务操可能数据冲突问题
- Android 版本更新签名冲突的问题以及注意事项,已解决
- 解决在拍照之后,Media数据没有及时更新问题
- 解决SpringBoot更新数据到MySQL乱码问题
- 解决SpringBoot更新数据到MySQL乱码问题
- EF更新,数据库值变化,前台页面并不变化,刷新也不变化,重新运行程序则变化----开发中遇到的问题(已解决)
- linq to sql更新问题解决方案
- 使用dbms_rectifier_diff解决高级复制中的数据冲突问题
- 解决SpringBoot更新数据到MySQL乱码问题
- 解决SpringBoot更新数据到MySQL乱码问题
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- WPF:解决数据绑定时不更新数据的问题
- 关于解决JQuery发送Ajax请求后,IE缓存数据不更新的问题
- 解决HTTP数据不更新问题——no-cache在HTTP通信协议中的应用收藏