Выбор ответа Middle EF Core обновлено
Состояния сущности в трекере
Вопрос
Сущность добавили через db.Add(order), а затем, не вызывая SaveChanges, удалили через db.Remove(order). Что сделает SaveChanges?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ничего не отправит: состояние сменится с Added на Detached. Трекер знает, что сущность ещё не существует в базе.
Варианты ответа
- Выполнит INSERT, а затем DELETE в одной общей транзакции
- Выполнит только DELETE и упадёт, потому что строки нет
- Ничего не отправит: состояние сменится с Added на Detachedправильный ответ
- Бросит исключение о недопустимом переходе состояния
Разбор
Трекер знает, что сущность ещё не существует в базе. Remove для Added просто перестаёт отслеживать её (Detached), и SQL не генерируется. Для сущности в состоянии Unchanged или Modified Remove перевёл бы её в Deleted, и тогда был бы DELETE.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.