У меня есть приложение MVC, которое сначала использует EF6 Code. Я хочу развернуть это приложение на нескольких датацентрах. В развертываниях, где есть миграции, я могу написать сценарий, чтобы перенести их все как можно раньше, но если один центр данных работает медленнее, тогда вызовы могут быть отклонены, поскольку схема больше не совпадает. Сценарий, который пытался координировать, также сделает невозможным скользящее обновление.Перенос кода EF Сначала в нескольких экземплярах
Есть ли способ сделать EF хотя бы попыткой выполнить запрос, даже если схемы не совпадают? Есть ли другой способ, которым я могу/должен подходить к этому?
UPDATE:
Давайте посмотрим, смогу ли я слово это лучше. Я хочу иметь приложение MVC в нескольких датацентрах. Предположим, что я развертываю приложение для каждого центра обработки данных по отдельности.
Вариант 1
- Deploy для DC
- код первой миграции работает на централизованной БД
- запросы, сделанные DC A успешно, но запросы к DC B неудачу
Вариант 2
- Развернуть до DC A
- Не запускается автоматически миграциям
- запросов, сделанных в DC неисправность и запросы к DC B продолжает преуспевать
Как разработать стратегию развертывания, которая будет делать это так, чтобы запросы либо DC будет работать ?
BTW: Я использую Azure Web Sites, если требуется решение для конкретной платформы.
«работает на централизованной БД». Миграции применяются к базе данных, а не к экземпляру приложения. Если ваша схема изменилась, вам потребуется развернуть обновленный код для каждого приложения, но вам не нужно выполнять миграцию для каждого. Миграция применяется только к централизованной базе данных. – AaronLS
Кроме того, я считаю, что EF проверяет версию БД и терпит неудачу, если ее версия отличается (это было пару версий назад, но я знаю, что они избавились от некоторых таблиц метаданных миграции). Таким образом, ваш второй экземпляр приложения просто бросает ошибки для любых запросов, сделанных для него во время развертывания обновленного экземпляра, который обычно довольно быстрый. Вы можете проверить это и определить точное исключение и ловушку этого исключения и отправить пользователям сообщение «обновление сайта» или попытаться направить их в другой экземпляр, если у вас есть эта возможность. – AaronLS
Да, вы ударили его по голове. Я могу полностью вернуть ошибки или сообщение «обновление сайта», но похоже, что должно быть решение для прокачки обновлений, где вы проверяете сайт на ограниченном количестве серверов, прежде чем отправлять его остальным. –