我错过了什么?
我正在尝试使用这样的 TransactionScope 使用 NOLOCK 阅读:
var scopeOptions = new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted };
using (var scope = new TransactionScope(TransactionScopeOption.Required, scopeOptions))
{
using (var db = new MyDbContext(ConnectionStringEntities))
{
// Simple read with a try catch block...
}
scope.Complete();
}
我希望看到 NOLOCK 添加到 SQL 查询(查看 SQL Profiler 和自定义 DbCommandInterceptor - 但它不存在......
更新:经过更多研究,我想知道是否最终使用了所选游标,只是没有 NOLOCK“提示”(特定于 SQL Server - 也特定于一个表),我发现了一些获取当前事务的代码和它似乎显示了正确选择的事务隔离(ReadUncommitted / Serializable 等)我仍然想测试它,但如果您有任何想法,请告诉我
获取当前的 .net TransactionScope IsolationLevel
Transaction trans = Transaction.Current;
System.Transactions.IsolationLevel level = trans.IsolationLevel;
LogService.Instance.Debug($"Transaction IsolationLevel = {level.ToString()}");