锁定实体框架中的表

Chr*_*ian 6 sql entity-framework locking

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

有没有办法锁定整个表,例如阻止任何人放置新行或更新行?

谢谢,克里斯蒂安

exp*_*nit 2

我不清楚为什么你会想要这个,但如果你真的想锁定整个表,你可以:

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

改编自此处的示例:

ALTER INDEX [MyIndexName] ON [dbo].[MyTableName] SET ( ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF)
Run Code Online (Sandbox Code Playgroud)

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

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

改编自此处的示例:

TransactionOptions topt = new TransactionOptions();   
topt.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
using (var tran = new TransactionScope(TransactionScopeOption.Required, topt)) {
   //do stuff
}
Run Code Online (Sandbox Code Playgroud)