【发布时间】:2020-11-30 09:54:54
【问题描述】:
我在 ReadUncommited 模式下使用 .NET 5.0 事务:
MyDbcontext.Database.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)
我的理解是,在这种模式下,数据库上没有锁(当然,代价是用户可能会读取不是最新的记录)。
但我注意到,在提交或回滚此事务之前,我确实会获得锁。 我可以在提交/回滚之前触发断点并在我的 MS SQL Studio 管理器中执行 SQL 请求时看到它。 在事务提交或回滚之前,请求不会返回。
这是它应该工作的方式吗? 如果是这样,有没有办法让我的交易完全没有锁定?我不介意阅读未提交的记录,但我仍然需要一个事务来确保所有数据库操作都运行或不运行。
【问题讨论】:
-
But I notice that I DO get locks你是怎么得出这个结论的? -
@mjwills :我得出这个结论是因为我的选择 SQL 查询(从我的 MS SQL Studio 管理器在 VS 之外运行)在事务提交或回滚之前不会返回。
-
My understanding is that with this mode, there are no locks on the DB这不是真的。例如,更新需要解锁。
标签: c# .net sql-server transactions