通过ApplicationContext锁定Db Asp.Net

时间:2013-06-26 15:28:42

标签: asp.net locking

我有一个db,我需要在表中写入条目。 我需要确保我的表在任何给定时间只包含20行(我正在简化)。 当然,由于我在一个网络应用程序中,我同时有几个用户。

这是我打算做的事情:

我使用带有“AddRecord”按钮的aspx页面,当我点击它时,我这样做:

public void click(event e...)
{
    Object lockInstance = ApplicationContext["lockObject"];
    if (lockInstance  == null)
     {
     // Create Object and store it in app context.

     }

    lock(lockInstance)
    {
          // Run Query select count bla bla
          // if count < 20 then insert...
    }

}

没有触发器或存储过程(不是我没有偏见,我正在为之工作的人是:))

有没有比依赖应用程序上下文更好的方法?

谢谢

1 个答案:

答案 0 :(得分:1)

您的解决方案无法在Web园或负载均衡的Web场场景中运行。我建议你使用正确的数据库锁。

例如,你可以。开始一个事务,使用TABLOCKX执行select语句(它独占锁定表),添加一些行,如果少于20,最后提交事务。

请参阅locking hints