2013-11-27 6 views
1

Мой контекст: C#, EF, SQL Server 2012.изменения базы данных, обратная совместимость, Entity Framework

Есть 2 отдельные приложения (услуги), давайте назовем их X и Y.

  • Service X = API веб-сервиса, который используется для наших внешних клиентов для связи с нашим продуктом.
  • Служба Y = наша служба Youtube, которая обменивается данными с помощью API Google.

X & Y запускается отдельно, нет связи, но у них есть доступ к одной базе данных.

Пример: Внешний клиент предоставляет данные с использованием X api. Он хранится в базе данных. Y сервис ищет базу данных и процессы (загружает/синхронизирует видео в канале YouTube.)

Теперь бизнес диктует необходимость добавления дополнительных данных.

Так что API X должен быть расширен. И база данных должна быть расширена.

Y необходимо обновить для обработки новых данных.

Дилемма: у нас много клиентов. У всех есть своя база данных. Мы не хотим обновлять все свои базы данных.

Мы не имеем несколько версий сервиса Y. Таким образом, все они будут получать новую версию сервиса Y.

Так обслуживание Y придется работать с старой и новой версией базы данных.

Служба X будет обновляться только после обновления базы данных, поэтому нет проблем.

Служба Y использует Entity Framework, (код не сгенерирован).

Как я могу убедиться, что сервис Y будет работать в обоих случаях:

  • OLD: столбцы не существуют в базе данных.
  • NEW: столбцы существуют в базе данных.

У кого-нибудь есть идеи ????

+0

Я прочитал эту тему, связанную: http://social.msdn.microsoft.com/Forums/en-US/294fdabc-fb8c-44a2- b3fd-4df30a868af4/факультативные-колонки-в-сущность-рамки? форум = adodotnetentityframework – user3041178

ответ

0

Case NEW: Это не должно быть проблемой с

новой версии сервиса Y

и новую базу данных.

Дело OLD: Это то, что вызывает проблему обратной совместимости, поскольку сбой EF из-за ошибки отображения. Один из вариантов состоит в том, чтобы перестроить модель, основанную на старой структуре базы данных, и сохранить ее в библиотеке классов, готовой к отправке на Y. Другой подход, основанный на кодах.

Furthur чтение:

Backwards compatibility when data store changes

on code-first

Смежные вопросы