我有一个表在一些批量更新期间有一些潜在的锁。我正在使用 SqlServer。
我想允许对这一特定的读取操作进行脏读。这看起来像正确的实现吗?是否有另一种方法可以为某个特定操作启用 [WITH NOLOCK]?
不幸的是,我找不到关于该主题的太多文档,希望提供任何包含更多信息的链接。
以这种方式使用交易是否有任何潜在的失败?
此外,是否有任何方法可以在所有操作的上下文中启用脏读?
public async Task<AppUser> GetUserByIdAsync(string employeeId)
{
using var transaction = await _context.Database.BeginTransactionAsync(System.Data.IsolationLevel.ReadUncommitted);
var users = await _context.Users
.Include(u => u.PositionRoles)
.ThenInclude(p => p.Role)
.Include(u => u.UserRoles)
.ThenInclude(r => r.Role)
.Include(u => u.TeamRoles)
.ThenInclude(r => r.Role)
.Include(u => u.UserLocations)
.SingleOrDefaultAsync(u => u.EmployeeId == employeeId);
await transaction.DisposeAsync();
return users;
}