And*_*zej 6 c# asp.net asp.net-mvc
假设我有一个带有"UpdateRecord(int recordID)"方法的控制器.这个方法只能更新给定记录一次(通过设置适当的值来记录在数据库中,让我们说它的列是"IsLock").要检查它我做:
所以现在我想知道如果我对这个方法(使用相同的recordID)执行两个AJAX请求,那么会发生什么.ASP.NET会在第一次请求执行后执行第二个请求吗?或者它会同时执行吗?
为了更清楚地说明,请告诉我这种情况是否可行:
如果可能,请告诉mi我如何确保我的方法以防止这种情况发生?
首先,它不仅由您的应用程序定义,还由 IIS 设置定义。我认为这篇文章会有帮助。
要回答 ADO.net 部分 - 有多种类型的数据并发控制,您可以在此处阅读(ADO.NET 中的数据并发) 有关差异的信息,并使用适合您情况的一种。
在您使用锁的情况下,您将更改您的查询
update T set IsLock = 1 where recordID = 555
Run Code Online (Sandbox Code Playgroud)
到
update T set IsLock = 1 where recordID = 555 and IsLock = 0
Run Code Online (Sandbox Code Playgroud)
并检查返回值是cmd.ExecuteNonQuery()
1还是0。
如果返回 0 条记录未更新且锁定已被其他用户设置等。
您可能还想LockerID
向表中添加字段,以便您的查询
update T set IsLock = 1, LockerID = @userID where recordID = @recordID and IsLock = 0
Run Code Online (Sandbox Code Playgroud)
因此,当打开记录时,您将首先执行锁定查询,如果成功,您将加载记录并显示编辑模式,否则显示只读模式。
归档时间: |
|
查看次数: |
1029 次 |
最近记录: |