sql - 在 Entity Framework 中锁定表

标签 sql entity-framework locking

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

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

谢谢,
基督教

最佳答案

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

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

  • 示例改编自 here :
    ALTER INDEX [MyIndexName] ON [dbo].[MyTableName] SET ( ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF)
    

    注意:这假设您的应用程序完全“拥有”这些表 - 不想应用它并破坏其他应用程序
  • 将您的查询设置为使用 Serializable 隔离级别

  • 示例改编自 here :
    TransactionOptions topt = new TransactionOptions();   
    topt.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
    using (var tran = new TransactionScope(TransactionScopeOption.Required, topt)) {
       //do stuff
    }
    

    关于sql - 在 Entity Framework 中锁定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12459338/

    相关文章:

    java - 在finally{}中解锁时返回一个值

    java - com.ibm.db2.jcc.am.SqlTransactionRollbackException : DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001,SQLERRMC=68,DRIVER=3.65.110

    c# lock 语句性能

    c# - EF Core - 表 '*.__EFMigrationsHistory' 不存在

    sql - SQL Server 语法错误

    php - 如何让 <textarea> 仅将撇号识别为文本?

    sql - 在 Azure Databricks 的 Spark-SQL 中创建用户定义(非临时)函数

    mysql - 用于练习的示例数据集 - Oracle pl/sql

    c# - Entity Framework 获取缓慢

    entity-framework - Azure 应用服务上的 EF Core (1.0.0) 迁移