Я думаю, ZorgoZ
правильно, и этот ответ не будет касаться вашего фактического вопроса, но я думаю, что это ваша настоящая проблема (см. XY проблема ): вам не удалось сохранить некоторые изменения (бизнес-мудро), и вы хотите иметь возможность повторить попытку сохранения их позже, не требуя некоторых изменений EF, которые вы хотите сохранить в более поздний момент.
Один из способов сделать это - сохранить бизнес-информацию, которая инициирует изменение, иповторите весь поток:
- определите какую-то очередь, хранящуюся в файле, изолированном хранилище и т. д. (зависит от вашей технологии)
- ваш поток обновлений должен сохраняться в виде некоторой записи /объект в очереди, который содержит всю соответствующую информацию + состояние (например, в очереди, ошибка сохранения и т. д.)
- попытка обновления.Если это не удается, вы можете получить обновление состояния (например, ошибка сохранения)
- , пользователь закрывает приложение
- , позже пользователь открывает приложение, видя состояние элементов очереди (элемент 1 сохранен, OK,ошибка сохранения элемента 2 и т. д.)
Помимо технических проблем EF, эта реализация допускает изменения потока, которые включают в себя изменения, не относящиеся к изменениям сохранения EF (например, также проверяют некоторые внешние API), и полностью абстрагирует слой доступа к данным(Реализация сериализации изменений EF имеет большой шанс зависеть от некоторых спецификаций EF).
Кроме того, я чувствую, что сериализацию контекстной информации (например, данные за какой-либо формой) легче реализовать, чем сериализацию изменений контекста EF.