【发布时间】:2022-01-04 05:59:57
【问题描述】:
我在测试环境中收到错误,但在 prod 环境中没有收到错误,即使尚未放置跟踪。
错误“GetUserAsync:System.InvalidOperationException:无法跟踪实体类型“UserEntity”的实例,因为已在跟踪另一个具有键值“{Id:1}”的实例。附加现有实体时,请确保只有一个附加了具有给定键值的实体实例。
代码:
internal async Task<UserEntity> GetUserAsync(CancellationToken cancellationToken)
{
var result = await _userDataQuery.GetLatestUser(cancellationToken);
}
我已经加了AsNoTracking:
public async Task<UserEntity> GetLatestUser(CancellationToken cancellationToken)
{
var result = await this.Entities
.OrderByDescending(m => m.Id)
.AsNoTracking().FirstOrDefaultAsync();
await Context.Entry(result).ReloadAsync();
return result;
}
不确定这是否有帮助,但我也注意到两个环境之间的 postgreSQL 上的 pg_sequences 对于用户表是不同的,并且它们在表中都只有 1 条记录
测试环境:
last_value = 2
产品环境:
last_value = 1
【问题讨论】:
标签: c# postgresql entity-framework linq