当前位置:  开发笔记 > 编程语言 > 正文

LINQ to SQL和并发问题

如何解决《LINQtoSQL和并发问题》经验,为你挑选了1个好方法。

我们正在尝试建立一个大批量订单记录系统.有三个主要表:1.订单2. OrderDetails 3. OrderShipment

Shipment表包含每个订单的n条记录,并且在客户接受订单之前可以更改任何记录货件条目,之后它将被冻结.(业务要求)

虽然在现实世界的场景中可能不会发生这种情况......在我们的加载测试期间,我们得到了System.Data.Linq.ChangeConflictException异常.在交易中包含提交也无济于事.我们不能强制LINQ在整个更新操作期间锁定行吗?

有没有其他方法来克服这个?



1> Marc Gravell..:

如果您对同一数据的并发更新存在真正的问题,那么您可以考虑在事务中执行整个操作 - 即获取数据提交数据.只要你将get/update/commit视为一个短暂的原子操作(即你不在中间暂停用户输入),它应该没问题.

特别是,对于可序列化的隔离级别,没有人可以更新您具有读锁定的数据(即您查询的任何内容).唯一的问题是,如果不同的查询以不同的顺序读取数据,这可能会导致死锁情况.AFAIK,没有办法让LINQ-to-SQL发出(UPDLOCK)提示,这是一种耻辱.

只要将TransactionScope或SqlTransaction设置为可序列化隔离(这是TransactionScope的默认设置),它就可以执行.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有