2013-06-26 57 views
0

我得到了一個數據庫,我需要將條目寫入表中。 我需要確保我的表在任何給定的時間只包含20行(我簡化它)。 當然,由於我在一個網絡應用程序,我有幾個用戶在同一時間。通過ApplicationContext鎖定Db Asp.Net

這就是我打算做:

我用一個aspx頁面的按鈕「的AddRecord」,當我點擊它,我這樣做:

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... 
    } 

} 

任何觸發器或存儲proc(不,我沒有偏見,我工作的人是:))

有沒有比依賴應用程序上下文更好的方法?

謝謝

回答

1

您的解決方案不適用於Web園或負載均衡的Web場景場景。我建議你使用適當的DB鎖。例如:

您可以。開始一個事務,使用TABLOCKX(專門鎖定表)執行select語句,添加一些行(如果少於20個),最後提交事務。

請參閱locking hints

+0

正確的在網上花園或負載平衡的非工作,我也讀過它,謝謝指出它:) –