C# 数据库应用程序并发

2024-01-08

我曾经用 C# 编写过一个多用户应用程序,使用 SQL Server 2005 Express 作为后端。

我有一个订单集合。为了使用此类,您需要实例化它并调用 Load(CustomerCode) 方法,以便使用指定客户的订单填充集合。

我的问题:

如何强制执行并发性,以便只有 1 个用户可以请求特定客户的订单集合?当用户使用完该对象时(当该对象设置为 null 时), 我需要再次提供它。


您需要实施悲观离线锁 http://martinfowler.com/eaaCatalog/pessimisticOfflineLock.html图案。

本质上,您有一个表,您在其中放置了代表对其他表中的记录的“锁定”的记录。当您想要编辑记录时,您首先检查锁定表中是否有锁,然后在域逻辑/UI 中做出相应的反应。

它不一定是数据库,它可以是内存缓存。当我在示例中说“表”时,我指的是逻辑表,不一定是数据库表。

悲观离线锁可以防止 完全避免冲突。 它迫使商业交易 获取一条数据的锁 在它开始使用它之前,这样, 大多数时候,一旦你开始 商业交易你可以很漂亮 确保你会完成它而不是 通过并发控制反弹。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 数据库应用程序并发 的相关文章

随机推荐