gpt4 book ai didi

c# - LINQ to SQL 和并发问题

转载 作者:太空狗 更新时间:2023-10-29 20:15:36 26 4
gpt4 key购买 nike

我们正在尝试构建一个大批量订单记录系统。共有三个主要表:1.订单2. 订单详情3. 订单发货

装运表包含每个订单的 n 条记录,并且在客户接受订单之前可以更改任何记录装运条目,之后订单将被卡住。 (业务需求)

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

还有其他方法可以克服这个问题吗?

最佳答案

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

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

TransactionScope 或 SqlTransaction 都可以,只要它们被设置为可序列化隔离(这是 TransactionScope 的默认设置)。

关于c# - LINQ to SQL 和并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com