小编给大家分享一下Linq开放式并发控制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
首先让大家了解下Linq开放式并发控制,然后全面介绍Linq开放式并发。
Linq开放式并发控制
在 LINQ to SQL 对象模型中,当以下两个条件都得到满足时,就会发生“Linq开放式并发冲突”:客户端尝试向数据库提交更改;数据库中的一个或多个更新检查值自客户端上次读取它们以来已得到更新。 此冲突的解决过程包括查明对象的哪些成员发生冲突,然后决定您希望如何进行处理。
Linq开放式并发(Optimistic Concurrency)
说明:这个例子中在你读取数据之前,另外一个用户已经修改并提交更新了这个数据,所以不会出现冲突。
//我们打开一个新的连接来模拟另外一个用户 NorthwindDataContext otherUser_db = new NorthwindDataContext(); var otherUser_product = otherUser_db.Products.First(p => p.ProductID == 1); otherUser_product.UnitPrice = 999.99M; otherUser_db.SubmitChanges(); //我们当前连接 var product = db.Products.First(p => p.ProductID == 1); product.UnitPrice = 777.77M; try { db.SubmitChanges();//当前连接执行成功 } catch (ChangeConflictException) { }
说明:我们读取数据之后,另外一个用户获取并提交更新了这个数据,这时,我们更新这个数据时,引起了一个并发冲突。系统发生回滚,允许你可以从数据库检索新更新的数据,并决定如何继续进行您自己的更新。
//当前用户 var product = db.Products.First(p => p.ProductID == 1); //我们打开一个新的连接来模拟另外一个用户 NorthwindDataContext otherUser_db = new NorthwindDataContext() ; var otherUser_product = otherUser_db.Products.First(p => p.ProductID == 1); otherUser_product.UnitPrice = 999.99M; otherUser_db.SubmitChanges(); //当前用户修改 product.UnitPrice = 777.77M; try { db.SubmitChanges(); } catch (ChangeConflictException) { //发生异常! }
以上是“Linq开放式并发控制的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!