当两个成员试图访问它时如何锁定记录?

Ram*_*esh 3 sql-server asp.net record-locking

我有这样的场景,

我的环境是.Net2.0,VS 2008,Web Application

当两个成员同时尝试访问时,我需要锁定记录.

我们可以用两种方式做到,

  1. 通过前端(将sessionID和记录唯一编号放在字典中并将其保留为静态或应用程序变量),我们将在响应退出该页面时释放,客户端未连接,单击后发布按钮后会议结束了.

  2. 通过后端(记录锁定在DB本身 - 需要学习 - 我的团队成员正在寻找).

还有其他方法可以做,我需要在每个步骤中查看其他方法吗?

我错过了任何条件吗?

Rem*_*anu 6

您不会锁定客户端的记录,因为锁定记录的时间超过几毫秒只是在数据库中可以做的最具破坏性的事情.您应该使用乐观并发:您检测自上次读取后记录是否已更改并重新尝试事务(例如,您将屏幕重新显示给用户).实际实现方式取决于您使用的数据库技术(ADO.Net,DataSet,Linq,EF等).

如果业务域需要类似锁定的行为,则这些行为始终在数据库中实现为预留逻辑:当显示记录时,它将被"保留",以便其他用户无法尝试进行相同的事务.预订完成或超时或取消.但是"保留"永远不会使用锁来完成,总是从"可用"到"保留"或类似的状态显式更新状态.

这种模式也描述了EAA的乐观:乐观离线锁定.