Контест Senior EF Core обновлено
Трекер изменений своими руками
Условие
Смоделируйте упрощённый трекер изменений EF Core для сущностей с ключом. В базе изначально есть набор ключей. Команды и ответы:
LOAD k: если сущность не отслеживается, загрузить (Unchanged) илиNotFound, если её нет в базе; если отслеживается, вывести текущее состояние без изменений;ADD k: для неотслеживаемой:ERROR duplicate, если ключ есть в базе, иначеAdded; дляDeleted: сноваModified; иначеERROR tracked;EDIT k:Unchanged→Modified;AddedиModifiedне меняются (вывести состояние);Deleted→ERROR deleted; не отслеживается →ERROR not tracked;REMOVE k:Added→ перестаёт отслеживаться (Detached);Unchanged/Modified→Deleted;DeletedостаётсяDeleted; не отслеживается →ERROR not tracked;SAVE: вывестиINSERT a UPDATE b DELETE cпо числу сущностейAdded,Modified,Deleted, применить к базе; добавленные и изменённые становятсяUnchanged, удалённые перестают отслеживаться.
Ввод: q (q ≤ 10⁴), строка с ключами в базе через пробел (или -, если база пуста), затем q команд.
Вывод: ответ на каждую команду.
Пример
8
1 2
LOAD 1
EDIT 1
ADD 3
REMOVE 2
LOAD 2
REMOVE 3
SAVE
LOAD 2
Unchanged
Modified
Added
ERROR not tracked
Unchanged
Detached
INSERT 0 UPDATE 1 DELETE 0
Unchanged
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.