LINQ到SQL结合读未提交和读已提交

本文关键字:提交 结合 LINQ SQL | 更新日期: 2023-09-27 18:07:53

我想使用LINQ to SQL作为应用程序的数据层。乐观并发似乎可以工作,但我想过于乐观,不打扰任何锁定(例如ReadUncommitted a.k.a WITH (NOLOCK)),直到我得到SubmitChanges(),在这一点上,我认为使用ReadCommitted是可以的。

这听起来是不是很疯狂?使用两个分离的TransactionScope对象(一个用于读取ReadUncommitted,第二个用于提交ReadCommitted的更改)是否更好,或者是否有更好的方法可以在提交更改之前立即提高隔离级别?

LINQ到SQL结合读未提交和读已提交

ReadCommittedReadUncommittedSubmitChanges()上无关紧要,因为它是写操作,而不是读操作。无论隔离级别是什么,更新总是获取锁并尊重现有锁。它必须这样,这是锁的主要目的。

当然,通过更新未提交的数据,您冒着记录甚至不存在以进行更新的风险,但是当您决定保持乐观时,这是您接受的风险。