sql-server - ReadUnCommitted 隔离级别不适用于 EF Core
问题描述
对于隔离级别“ReadUncommitted”,我们应该创建一个事务:
using var transaction = await db.Database.BeginTransactionAsync(isolationLevel: System.Data.IsolationLevel.ReadUncommitted);
try
{
// Run the query
await transaction.CommitAsync();
}
catch (Exception)
{
await transaction.RollbackAsync();
}
但 xEvent Profiler 显示此配置文件登录:
此登录配置文件正在使用“已提交读”!
根据这个问题,我们必须创建两个事务:
using var tran = await db.Database.BeginTransactionAsync(isolationLevel: System.Data.IsolationLevel.ReadUncommitted);
try
{
// without any query
await tran .CommitAsync();
}
catch (Exception)
{
await tran .RollbackAsync();
}
using var transaction = await db.Database.BeginTransactionAsync(isolationLevel: System.Data.IsolationLevel.ReadUncommitted);
try
{
// Run query
await transaction.CommitAsync();
}
catch (Exception)
{
await transaction.RollbackAsync();
}
两次打开和关闭事务似乎不是一个好主意。
如何在 EF Core 中将隔离级别设置为“未提交读取”?
解决方案
推荐阅读
- angular6 - Angular 2 复选框验证
- python - 如何在一个文件python脚本中将函数分配给其他函数?
- php - Laravel 表单提交没有走正确的路线?
- javascript - 在本地运行节点与在 Web 服务器上安装节点不同吗?
- android - 使用 Android NDK 演示 printf 或 __android_log_print 漏洞
- python - 使用终端安装python时遇到问题
- ios - In App Purchase (validation) Receipt receiptStatus 为 nil
- html - 将特殊字符限制在输入框中
- graphql - 如何从外部 API 的数组中获取变量?
- java - 如何使用具有随机节点和容量的二维数组实现网络流算法