一尘不染

在实体框架中锁定表

sql

我有一个要锁定的表的SQL数据库。我正在使用实体框架。基本上,每个进程都有许多要同时写入数据库的过程。他们每个人都希望更新某个表中的一行。但是,我只希望其中一个能够同时执行此操作。

有没有一种锁定整个表的方法,例如防止任何人放置新行或更新行?

谢谢,克里斯蒂安


阅读 150

收藏
2021-05-23

共1个答案

一尘不染

我不清楚您 为什么 会想要这样做,但是如果您确实想锁定整个表,则可以:

  • 关闭行和页锁定,以便一切升级为表锁

改编的示例:

ALTER INDEX [MyIndexName] ON [dbo].[MyTableName] SET ( ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF)

注意:这假设您的应用程序仅“拥有”这些表-不想应用此表并破坏其他应用程序

  • 设置查询以使用可序列化隔离级别

这里改编的示例:

TransactionOptions topt = new TransactionOptions();   
topt.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
using (var tran = new TransactionScope(TransactionScopeOption.Required, topt)) {
   //do stuff
}
2021-05-23