Вступить в клуб →
сложнаявопросEntity Framework Core и LINQ

SaveChanges вернул 0 после правки сущности из AsNoTracking-запроса

Разработчик добавил AsNoTracking во все запросы репозитория ради производительности. После этого перестал работать сценарий оплаты:

var order = await db.Orders.AsNoTracking().FirstAsync(o => o.Id == id);
order.Status = OrderStatus.Paid;
var affected = await db.SaveChangesAsync(); // affected == 0, статус в базе прежний

Почему изменение не сохраняется?

  • AsNoTracking запрещает изменять свойства загруженной сущности, поэтому присваивание не применилось к объекту
  • Изменения сохранены, а 0 — это счётчик затронутых таблиц, а не строк
  • Сущность не отслеживается контекстом: EF не знает о правке и не генерирует UPDATE
  • Не открыта явная транзакция, поэтому SaveChanges не отправил изменения в базу

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела