我应该在交易范围中使用什么隔离级别

时间:2013-10-23 22:51:50

标签: entity-framework transactionscope isolation-level

我应该在TransactionScopes中使用什么IsolationLevel:

  1. 读取单个记录,我可以更新该记录。这个记录是 独立于数据库中的所有其他数据,因此我只需要锁定那条记录。
  2. 尝试阅读单个记录。如果不存在记录,则使用该记录创建记录 该表中的值。这与所有其他表无关,但它 需要锁定此表,以便另一个线程也找不到 记录,然后添加相同的记录。
  3. 在第二种情况下,我认为我需要锁定表以停止对表的插入以及对记录的任何访问读取,但允许读取表中的其他记录以及对任何其他表的任何访问。

    谢谢 - 戴夫

1 个答案:

答案 0 :(得分:0)

我不确定EF,因为我没有使用它,但我的答案如下:

  1. 使用'REPEATABLE READ'就足够了,因为它“指定语句无法读取已被修改但尚未由其他事务提交的数据,并且没有其他事务可以修改当前已读取的数据交易直到当前交易完成。“

  2. 我会使用'SERIALIZABLE',因为“在当前事务完成之前,没有其他事务可以修改当前事务已读取的数据。”

  3. 您可以阅读更多关于hereisolation levels