LINQ到SQL结合读未提交和读已提交
本文关键字:提交 结合 LINQ SQL | 更新日期: 2023-09-27 18:07:53
我想使用LINQ to SQL作为应用程序的数据层。乐观并发似乎可以工作,但我想过于乐观,不打扰任何锁定(例如ReadUncommitted
a.k.a WITH (NOLOCK)
),直到我得到SubmitChanges()
,在这一点上,我认为使用ReadCommitted
是可以的。
这听起来是不是很疯狂?使用两个分离的TransactionScope
对象(一个用于读取ReadUncommitted
,第二个用于提交ReadCommitted
的更改)是否更好,或者是否有更好的方法可以在提交更改之前立即提高隔离级别?
ReadCommitted
或ReadUncommitted
在SubmitChanges()
上无关紧要,因为它是写操作,而不是读操作。无论隔离级别是什么,更新总是获取锁并尊重现有锁。它必须这样,这是锁的主要目的。
当然,通过更新未提交的数据,您冒着记录甚至不存在以进行更新的风险,但是当您决定保持乐观时,这是您接受的风险。