Несоответствие Entity Framework Code-first миграции между сборками

Я создаю службу Azure (с веб-ролью и рабочей ролью), обе из которых ссылаются на файл .dll (dll модели) с классами модели Entity Framework Code-first. В dll модели включена автоматическая миграция.

Я планирую упростить расширение рабочей роли, поэтому собираюсь загрузить несколько файлов dll (рабочая dll) в большой двоичный объект и запрограммировать рабочую роль для динамической загрузки и выполнения кода из этих сборок. Естественно, рабочие библиотеки DLL также будут ссылаться на модель dll, поскольку они обновляют базу данных.

Мой вопрос заключается в том, что произойдет, если я разверну новую версию dll модели без обновления рабочих dll. воркеры будут ссылаться на более старую версию модели, которая не содержит последней миграции. Будет ли EF пытаться понизить схему? Выбросить исключение? Работать так, как ожидалось, пока сущности по-прежнему совместимы?




Ответы (1)


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

http://msdn.microsoft.com/en-us/library/windowsazure/hh386336.aspx
http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx
person NavaRajan    schedule 29.01.2013
comment
Конечно, я это сделаю, но мне было интересно, что должно произойти в моем сценарии. Тестирование развертывания таким образом (т. е. пусть оно поработает некоторое время) может позволить скрыть ошибки. В любом случае, спасибо за ссылки! - person csima; 29.01.2013
comment
Просто я хочу знать, почему вы хотите динамически загружать и выполнять сборки. - person NavaRajan; 29.01.2013
comment
Потому что я хочу иметь возможность запускать разовые задания (я задавал другой вопрос по теме, вы можете увидеть его в моем профиле): скажем, я добавляю новое поле в таблицу в БД, а рабочий будет вычислять значение для этого поля каждый раз, когда вставляется запись. Однако я также должен вычислить значение для каждой записи, которая уже есть в таблице. Это разовая работа, и мне нужно, чтобы рабочий мог загрузить свой код из сборки. Естественно, я могу использовать тот же подход для повторяющихся задач (например, для получения данных). - person csima; 29.01.2013