EF Core:The instance of entity type 'ApiLogs' cannot be tracked because another instance with the……
一、错误
二、解决方案
这个问题,是 EF Core 对实体默认进行状态跟踪造成的,说的高大上一点,叫:线程安全 导致的,解决方法很简单,即:对读取的数据不进行跟踪即可!可以使用 AsNoTracking 属性,也可以手动控制!
2.1 AsNoTracking
public async Task<List<T>> GetEntityListAsync(Expression<Func<T, bool>> whereLambda)
{
return await Task.Run(() =>
{
return _context.Set<T>().Where(whereLambda).AsNoTracking().ToList();
});
}
2.2 手动配置
public async Task<T> FindAsync(string id)
{
return await Task.Run(() =>
{
var entity =_context.Set<T>().Find(id);
_context.Entry(entity).State = EntityState.Detached;
return entity;
});
}