Есть ли простой способ сериализации / десериализации коллекции сущностей из контейнера EF? - PullRequest
1 голос
/ 10 февраля 2012

Кажется, для меня возникает следующая последовательность событий:

  1. Я создаю модель.
  2. Я загружаю данные в модель.
  3. Я меняю модель, теряя данные в оба конца.
  4. Я перезагружаю данные в модель, для этого пишу много шаблонного кода.

Опции, которые я могу придумать:

  • (A) SSMS генерирует сценарии, прежде чем я изменю модель.
  • (B) с использованием Функция TSQL для xml для передачи моих данных в XML (мне нужно узнать, как сделать это, но это кажется возможным).
  • (C) изменить генерацию кода EF разместить атрибуты сериализации XML
  • (D) есть Эксперт, скажите мне, почему мой подход неверен, и поправьте меня, чтобы это проблема аннулирована

1 Ответ

0 голосов
/ 10 февраля 2012

После того, как вы сериализовали и поделились / сохранили эти данные, у вас, по сути, есть контракт. Поэтому, если вы предвидите какие-либо проблемы с версионированием модели, я бы создал отдельную модель DTO для целей сериализации. Затем вы можете перезагрузить данные в DTO, даже если ваша модель DB изменится. Очевидно, вам необходимо отобразить модель DB в / из модели DB, но обычно это довольно тривиально.

Короче, я думаю, что проблема заключается в двойном использовании модели:

DB <===> Model <==> storage

Когда лучше работает следующее:

DB <===> DB Model <==*==> DTO Model <===> storage

Теперь вы можете работать с версионированием модели БД отдельно, подправив код, указанный в ссылке, помеченной *

Вы можете также обрабатывать изменения хранилища в этом сценарии или даже поддерживать несколько моделей DTO (либо для разных целей, либо для разных / несовместимых ревизий).

Всякий раз, когда сериализация становится сложной, обычно самое простое решение: ввести DTO

...