Я использую. Net Ядро 3.1 с EF, и я получил эту ошибку
Предполагается, что операция с базой данных затронет 1 строку (и), но фактически затронет 0 строк. Данные могут быть изменены или удалены, так как объекты были загружены.
У меня есть эта простая функция
public async Task<List<User>> ChangeUsersListStatus(List<User> users, string status)
{
foreach(User user in users)
{
user.Status = status;
_context.Users.Update(user);
}
await _context.SaveChangesAsync();
return users;
}
, и когда я вызываю ее с использованием загруженных связанных данных, как показано ниже вышеуказанная ошибка
await _context.Entry(employee).Collection(e => e.Users).LoadAsync();
await _userService.ChangeUsersListStatus(employee.Users, UserStatus.Active);
Но если я получу список пользователей, который выглядит так, что у меня нет ошибок, и он будет работать нормально
List<User> usersToDeactivate = await _context.Users.Where(e => e.EmployeeForeignKey == employee.Id).AsNoTracking().ToListAsync();
await _userService.ChangeUsersListStatus(usersToDeactivate, UserStatus.Active);
И мое, почему такое поведение происходит, мне просто нужно чтобы понять, почему ORM видит, что «employee.Users» отличается от списка пользователей.
Заранее спасибо.