Выбор ответа Middle EF Core обновлено

Состояния сущности в трекере

Вопрос

Сущность добавили через db.Add(order), а затем, не вызывая SaveChanges, удалили через db.Remove(order). Что сделает SaveChanges?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ничего не отправит: состояние сменится с Added на Detached. Трекер знает, что сущность ещё не существует в базе.

Варианты ответа

  1. Выполнит INSERT, а затем DELETE в одной общей транзакции
  2. Выполнит только DELETE и упадёт, потому что строки нет
  3. Ничего не отправит: состояние сменится с Added на Detachedправильный ответ
  4. Бросит исключение о недопустимом переходе состояния

Разбор

Трекер знает, что сущность ещё не существует в базе. Remove для Added просто перестаёт отслеживать её (Detached), и SQL не генерируется. Для сущности в состоянии Unchanged или Modified Remove перевёл бы её в Deleted, и тогда был бы DELETE.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.