0

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

  1. 读取一条记录,我可能会更新该记录。这条记录独立于数据库中的所有其他数据,所以我只需要锁定一条记录。
  2. 试图读取一条记录。如果不存在记录,则在该表中创建具有该值的记录。这与所有其他表无关,但它需要锁定此表,以便另一个线程也找不到任何记录,然后添加相同的记录。

在第二种情况下,我认为我需要锁定表以停止对表的插入和对记录读取的任何访问,但允许读取表中的其他记录以及对任何其他表的任何访问。

谢谢 - 戴夫

4

1 回答 1

0

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

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

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

您可以在此处阅读有关隔离级别的更多信息。

于 2013-10-23T23:24:15.033 回答