通过ApplicationContext锁定数据库Asp.Net
我得到了一个数据库,需要在其中向表中写入条目。 我需要确保我的表在任何给定时间都只包含20行(我正在简化它)。 当然,因为我在一个web应用程序中,所以我同时有几个用户 这就是我计划做的: 我使用带有按钮“AddRecord”的aspx页面,当我单击它时,我会执行以下操作:通过ApplicationContext锁定数据库Asp.Net,asp.net,locking,Asp.net,Locking,我得到了一个数据库,需要在其中向表中写入条目。 我需要确保我的表在任何给定时间都只包含20行(我正在简化它)。 当然,因为我在一个web应用程序中,所以我同时有几个用户 这就是我计划做的: 我使用带有按钮“AddRecord”的aspx页面,当我单击它时,我会执行以下操作: public void click(event e...) { Object lockInstance = ApplicationContext["lockObject"]; if (lockInstance
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...
}
}
公共作废点击(事件e.)
{
Object lockInstance=ApplicationContext[“lockObject”];
if(lockInstance==null)
{
//创建对象并将其存储在应用程序上下文中。
}
锁(锁实例)
{
//运行查询选择计数bla bla
//如果计数小于20,则插入。。。
}
}
没有触发器或存储过程(不,我没有偏见,我为之工作的人是:)
有比依赖应用程序上下文更好的方法吗
谢谢您的解决方案在web garden或负载平衡web farm场景中不起作用。我建议您使用适当的DB锁 例如,你可以。开始一个事务,使用TABLOCKX执行select语句(它以独占方式锁定表),如果行数少于20行,则添加一些行,最后提交事务
请参阅。更正web garden中的非工作或负载平衡,我也读过,但感谢您指出:)