C#数据库应用程序并发

时间:2009-04-02 13:56:02

标签: c# concurrency

我在c#的某个时代使用SQL Server 2005 express作为后端编写了一个多用户应用程序。

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

我的问题:

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

1 个答案:

答案 0 :(得分:7)

您需要实施Pessimistic Offline Lock模式。

基本上你有一个表,你把记录放在其他表中的记录上代表“锁定”。当您想要编辑记录时,首先检查锁定表中是否存在锁定,并在域逻辑/ UI中做出相应的反应。

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

  

悲观离线锁定阻止   通过完全避免冲突来解决冲突。   它强制进行商业交易   锁定一个数据   在它开始使用之前,所以,   大部分时间,一旦你开始了   商业交易你可以很漂亮   确定你没有被完成它   由并发控制反弹。