Как сохранить изменения на диск с помощью Entity Framework, когда соединение разорвано, поэтому при следующем запуске приложение распространяет изменения - PullRequest
0 голосов
/ 30 декабря 2018

Можно ли продолжать те "изменения", которые вы захотите внести в Entity Framework?

Например, я делаю запрос на обновление, после чего происходит сбой соединения, я закрываю приложение, а завтра я хочу, чтобы он выполнял этот запрос на обновление, когда соединение восстанавливается.

Это что-то подобноевозможно с Entity Framework 6?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Я думаю, ZorgoZ правильно, и этот ответ не будет касаться вашего фактического вопроса, но я думаю, что это ваша настоящая проблема (см. XY проблема ): вам не удалось сохранить некоторые изменения (бизнес-мудро), и вы хотите иметь возможность повторить попытку сохранения их позже, не требуя некоторых изменений EF, которые вы хотите сохранить в более поздний момент.

Один из способов сделать это - сохранить бизнес-информацию, которая инициирует изменение, иповторите весь поток:

  • определите какую-то очередь, хранящуюся в файле, изолированном хранилище и т. д. (зависит от вашей технологии)
  • ваш поток обновлений должен сохраняться в виде некоторой записи /объект в очереди, который содержит всю соответствующую информацию + состояние (например, в очереди, ошибка сохранения и т. д.)
  • попытка обновления.Если это не удается, вы можете получить обновление состояния (например, ошибка сохранения)
  • , пользователь закрывает приложение
  • , позже пользователь открывает приложение, видя состояние элементов очереди (элемент 1 сохранен, OK,ошибка сохранения элемента 2 и т. д.)

Помимо технических проблем EF, эта реализация допускает изменения потока, которые включают в себя изменения, не относящиеся к изменениям сохранения EF (например, также проверяют некоторые внешние API), и полностью абстрагирует слой доступа к данным(Реализация сериализации изменений EF имеет большой шанс зависеть от некоторых спецификаций EF).

Кроме того, я чувствую, что сериализацию контекстной информации (например, данные за какой-либо формой) легче реализовать, чем сериализацию изменений контекста EF.

0 голосов
/ 30 декабря 2018

Вы можете создать свой собственный ChangeTracker, как в этом учебнике , который сохраняет все изменения в файл.Парсинг файла для последующего использования может быть сложным.

Другой вариант будет использовать логика повторов и надеяться, что проблема с подключением была просто небольшим сбой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...