我曾经用 C# 编写过一个多用户应用程序,使用 SQL Server 2005 Express 作为后端。
我有一个订单集合。为了使用此类,您需要实例化它并调用 Load(CustomerCode) 方法,以便使用指定客户的订单填充集合。
我的问题:
如何强制执行并发性,以便只有 1 个用户可以请求特定客户的订单集合?当用户使用完该对象时(当该对象设置为 null 时),
我需要再次提供它。
您需要实施悲观离线锁 http://martinfowler.com/eaaCatalog/pessimisticOfflineLock.html图案。
本质上,您有一个表,您在其中放置了代表对其他表中的记录的“锁定”的记录。当您想要编辑记录时,您首先检查锁定表中是否有锁,然后在域逻辑/UI 中做出相应的反应。
它不一定是数据库,它可以是内存缓存。当我在示例中说“表”时,我指的是逻辑表,不一定是数据库表。
悲观离线锁可以防止
完全避免冲突。
它迫使商业交易
获取一条数据的锁
在它开始使用它之前,这样,
大多数时候,一旦你开始
商业交易你可以很漂亮
确保你会完成它而不是
通过并发控制反弹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)