【发布时间】:2021-06-04 07:28:12
【问题描述】:
我需要对 DbContext 执行的所有操作都应用相同的 IsolationLevel,所以我不必每次使用时都指定它。 有什么办法吗?
我正在使用 EF Core 3.1 和 SqlServer
更新:经过一些研究和测试,我发现我正在寻找的是将WITH (NOLOCK) 应用于表格。我还尝试将事务范围应用于单个查询并尝试从锁定的表中读取数据,但它不起作用。
这是我使用的代码:
using var transactionScope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted });
// query execution
transactionScope.Complete();
此代码复制自:https://docs.microsoft.com/en-gb/ef/core/saving/transactions,唯一的区别在于 IsolationLevel。
【问题讨论】:
-
您尝试应用哪个隔离级别?
-
如果您使用存储过程 - SET
ON;在您的存储过程中。如果您使用纯文本,请添加“SET ON;”到你的命令文本。 -
在这种情况下我不关心数据的可靠性,我想在 Read Uncommitted IsolationLevel 中读取它
-
@yob 我既没有使用存储过程,也没有使用纯文本。我需要在上下文中指定一次,这样上下文执行的每个操作都不需要指定它自己的隔离级别
标签: c# sql-server dbcontext ef-core-3.1 isolation-level