在asp net mvc中插入并发

时间:2017-12-19 12:01:20

标签: asp.net-mvc concurrency

我有一个多用户的企业应用程序,它是物流进出口系统,我们每个清关号码发布发票。我们的问题是两个用户实时发布相同清除发票,例如3秒。我们使用N层架构Asp .NET MVC和实体框架,这个问题的最佳实践是什么?是否可以锁定部分我的清关号码?

1 个答案:

答案 0 :(得分:0)

管理并发有两种方法

  1. 乐观锁定
  2. 悲观锁定
  3. 请参阅链接Optimistic vs. Pessimistic locking
    乐观锁定是一种策略,您可以在其中读取记录,记下版本号(其他方法执行此操作涉及日期,时间戳或校验和/哈希)并检查版本是否在您之前未更改把记录写回来。当你写回记录时,你过滤版本的更新,以确保它是原子的。 (即,在检查版本并将记录写入磁盘之间时尚未更新)并在一次更新中更新版本。

    悲观锁定是指在您完成之前锁定专用记录。

    我使用了SignalR的悲观锁定来向用户提供实时通知。每当用户编辑记录时,我们将在数据库表中添加具有该记录的唯一标识符的记录(这里数据是易失性的,我们使用nosql redis 存储锁定数据。当另一个用户尝试编辑同一记录时,将显示一条通知,说明该记录被用户名锁定。当其他用户完成编辑时,将发送用户完成的通知更新。