1
我想添加多用戶訪問功能,從而在我的Web應用程序中不會發生併發,是否有任何方法可以輕鬆實現?我如何使用Visual Studio 2015實現行或表鎖定?
我想添加多用戶訪問功能,從而在我的Web應用程序中不會發生併發,是否有任何方法可以輕鬆實現?我如何使用Visual Studio 2015實現行或表鎖定?
儘管您可以在代碼中指定鎖定提示,但通常鎖定在大多數rdms中都是透明的,並使用基礎引擎的鎖定特性。
您是否要求獨佔訪問資源?如果是這樣,那麼一個選項是使用sp_getapplock
系統存儲過程。您可以將關鍵部分邏輯放入事務中,並使用sql server的內置鎖定來確保同步訪問。
CREATE PROC MyCriticalWork(@MyParam INT)
AS
DECLARE @LockRequestResult INT
SET @LockRequestResult=0
DECLARE @MyTimeoutMiliseconds INT
SET @MyTimeoutMiliseconds=5000--Wait only five seconds max then timeouit
BEGIN TRAN
EXEC @LockRequestResult=SP_GETAPPLOCK 'MyCriticalWork','Exclusive','Transaction',@MyTimeoutMiliseconds
IF(@LockRequestResult>=0)BEGIN
/*
DO YOUR CRITICAL READS AND WRITES HERE
*/
--Release the lock
COMMIT TRAN
END ELSE
ROLLBACK TRAN
這些將是*底層*數據庫引擎的功能 - 不是Visual Studio的功能。 –
@marc_s底層數據庫引擎如mySQL?我可以知道該怎麼做嗎? – user7093382
是的,確切地說 - 這取決於你在使用哪個RDBMS來實現它。對於SQL Server,我會**強烈推薦** NOT **來完成它!處理少量併發的情況要比需要管理和可能中斷的鎖簡單得多(如果有人離開他們的PC,將鎖留在原地......) –