Свойство EntityState объекта отслеживает состояние объекта EF, начиная с момента времени, когда он был добавлен в DBContext.
Что делать, если я хочу отслеживать изменения с другого момента времени.
Ситуация, которая требует этого:
В форме редактирования я пытаюсь предупредить пользователя при выходе о сохранении объекта, если он был изменен. Это не является большой проблемой для существующих объектов, поскольку они помечаются как измененные, когда что-то изменяется. Но для новых сущностей EntityState всегда «добавлен», поэтому я не могу отслеживать, изменилось ли что-либо или нет.
При создании нового объекта я запускаю некоторый код инициализации. Нет необходимости предупреждать пользователя, если новый объект создан, инициализирован, но не изменен пользователем. Поэтому я хочу начать отслеживать изменения сразу после запуска кода инициализации. Излишне говорить, что DBUpdates должны работать как прежде.
Как я могу это сделать?
Примечание: есть несколько возможных решений, которые я придумал. Во-первых, сохраняется оригинальная копия объекта и выполняется сравнение полей по мере необходимости. Другой способ - хранить «измененную» переменную самостоятельно и записывать множество обработчиков событий в элементы управления редактора для ее обновления.
Оба являются дорогими, сложными в обслуживании и не рассматриваются как вариант.