博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF的乐观并发控制
阅读量:4463 次
发布时间:2019-06-08

本文共 1581 字,大约阅读时间需要 5 分钟。

1.在数据表中加一列TimeStamp类型的列,

2.在EDMX中设置改列为Fixed

典型代码:

View Code
catch (OptimisticConcurrencyException cex)            {                Debug.WriteLine(DateTime.Now +"冲突错误处理中的TimeStamp");                Debug.WriteLine("刷新前:" + BitConverter.ToString((cex.StateEntries[0].Entity as KB_BOMTable).TimeStamp));                MessageBox.Show(string.Format("BOM编号:{0},的记录已经被其他用户修改,请确认情况后再做处理!", (cex.StateEntries[0].Entity as KB_BOMTable).BOMId), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);                DBCtx.Refresh(System.Data.Objects.RefreshMode.StoreWins, cex.StateEntries[0].Entity);                Debug.WriteLine("刷新后:" +BitConverter.ToString((cex.StateEntries[0].Entity as KB_BOMTable).TimeStamp));                Debug.WriteLine("会话中:" + BitConverter.ToString((DBCtx.GetObjectByKey(cex.StateEntries[0].EntityKey) as KB_BOMTable).TimeStamp));                object lateEnt;                DBCtx.TryGetObjectByKey(new EntityKey("JL_MFGEntities.KB_BOMTable", "BOMId", "0002"), out lateEnt);                Debug.WriteLine(DateTime.Now + ",再次看会话中的TimeStamp");                Debug.WriteLine(BitConverter.ToString((lateEnt as KB_BOMTable).TimeStamp));                Debug.WriteLine("End<-");            }

 

采用EDMX的方式进行建模,DBCtx.Refresh方法参数一说明

RefreshMode.StoreWins: StoreWins表示发生并发冲突时按数据库中的取值,来替换当前会话中的对象(DBCtx),TimeStamp列会变成数据库中的取值

RefreshMode.ClientWins: ClientWins表示发生并发冲突时保留客户端的取值(TimeStamp列不会变),但是Refresh方法实际上会获取数据库中的当前对象对应的记录(Store.TimeStamp),在下次提交该记录时,Store.TimeStamp会用到update更新语句中,而不是使用对象本身的TimeStamp列取值。

转载于:https://www.cnblogs.com/wdfrog/archive/2012/06/14/2549835.html

你可能感兴趣的文章
【设计模式】4、原型模式
查看>>
进入meta模式关闭背光灯
查看>>
webstorm上svn的安装使用
查看>>
【JEECG技术文档】数据权限自定义SQL表达式用法说明
查看>>
使用 Bootstrap Typeahead 组件
查看>>
linux_cacti 配置之 安装snmp 服务
查看>>
201407-至今
查看>>
c# 应用事务
查看>>
优化杭州某著名电子商务网站高并发千万级大型数据库经验之- SQL语句优化(转)...
查看>>
WPF——TargetNullValue(如何在绑定空值显示默认字符)
查看>>
Linux之crontab
查看>>
清除浮动
查看>>
CenOS+宝塔(模拟)上线博客项目
查看>>
loadrunner Vugen-Tools General-Options-Replay设置
查看>>
redis限频
查看>>
Floyd判圈算法
查看>>
接口,lambda表达式与内部类(二)
查看>>
Phabricator是什么,代码审查工具
查看>>
Java虚拟机类加载机制
查看>>
DirectX:函数可以连接任意两个filter 分类: Direct...
查看>>