知识大全 ADO.NET Entity Framework 试水——并发[4]

Posted 冲突

篇首语:我自横刀向天笑,去留肝胆两昆仑。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ADO.NET Entity Framework 试水——并发[4]相关的知识,希望对你有一定的参考价值。

ADO.NET Entity Framework 试水——并发[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    laptop Brand = Lenovo ThinkPad      laptop Type = laptop Type & A     Submit st object context      objContext SaveChanges()    Try       Submit nd object context and cause cuncurrency exception       objContext SaveChanges()      Catch ex As OptimisticConcurrencyException       Using refresh method to       objContext Refresh(Objects RefreshMode StoreWins laptop )       We should load the new data from db and ask user to change it again       objContext SaveChanges()      End Try 

       我们创建了两个Object Context 分别查询出了同一个实体 第一个修改其品牌为 Lenovo ThinkPad 第二个同时将其型号修改为 T A 然后 第一个实体保存 然后 第二个保存 由于我们在Brand属性上设置了Concurrency Mode为Fixed 而此时 laptop 中的Brand属性的值应该是一开始取得的T 而数据库里的值是 Lenovo T 于是 系统就会抛出 OptimisticConcurrencyException (开放式并发异常) 当程序捕获到异常以后 就可以使用Object Context的Refresh方法对异常采取处理 由于没有在刷新laptop 以后 未对其作任何修改 故最终结果将与laptop 提交时的结果一致       这里 Refresh的第一个参数值得注意一下 它是一个枚举值 有两个选项 StoreWins或者是ClientWins 见名知义 如果是StoreWins 那么 Refresh以后 laptop 的值将与数据库里的对应记录的值一致(修改会丢失) 而如果ClientWins 则laptop 的值保持 并且提交以后 会把objContext 提交的修改覆蓋       其实 这两种方法均不完美 总会导致一部分修改丢失 但是 这总比在不知情的情况下的覆蓋要好       另外 需要说明 上面的方法 只是对并发冲突的一种模拟 这样的模式 在处理并发冲突时会有问题 一般的处理方法是 当检测到并发冲突时 提示用户会重新从数据库载入数据 然后 让用户在新数据的情况下重新修改后再次提交 直到不再有并发冲突发生       这样 看似可能成为一个无穷尽的痛苦的过程 但实际上 由于这种处理方式是基于对并发冲突的乐观估计来设计的 因此 当我们认为并发冲突很少有可能发生时 这种处理方式可以有效避免数据被无意识的覆蓋问题       五 示例代码下载        点击下载     //files cnblogs /xiaomi /Concurrency zip

cha138/Article/program/net/201311/14740

相关参考

知识大全 ADO.NET Entity Framework 试水——并发[3]

ADO.NETEntityFramework试水——并发[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework 试水——并发[1]

ADO.NETEntityFramework试水——并发[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework 试水——并发[2]

ADO.NETEntityFramework试水——并发[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework 入门示例向导

ADO.NETEntityFramework入门示例向导  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 ADO.NET Entity Framework存取数据库中图片

ADO.NETEntityFramework存取数据库中图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 详解ADO.NET Entity Framework 4中枚举的使用

详解ADO.NETEntityFramework4中枚举的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework存取数据库中的图片

ADO.NETEntityFramework存取数据库中的图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 挖掘ADO.NET Entity框架的性能

挖掘ADO.NETEntity框架的性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ADON

知识大全 ADO.NET Framework beta 3和Linq

ADO.NETFrameworkbeta3和Linq   以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧