Краткое введение:
У меня есть этот сайт ASP.NET Webforms с той особенностью, что у него не только одна база данных, но и много.
Зачем? Потому что вы можете создавать новые «экземпляры» сайта на лету. Каждый «экземпляр» использует одну и ту же кодовую базу, но имеет свою собственную базу данных. Все эти базы данных имеют одинаковую схему (структуру), но, конечно, разные данные. Не спрашивайте «почему вы не помещаете все в одну базу данных и не используете InstanceId, чтобы узнать, что это такое», потому что это бизнес-политика.
Приложение знает, какой экземпляр запрашивается из-за URL. Для этого есть одна дополнительная база данных (я знаю ее строку подключения во время разработки). Эта база данных имеет только 2 таблицы и ассоциирует URL с «экземплярами приложения». Тогда, конечно, каждому «экземпляру приложения» соответствует строка подключения.
Текущая ситуация: Сейчас ничего не используется, чтобы помочь нам в работе по синхронизации каждой базы данных экземпляра (распространение схемы меняется на каждую). Так что мы делаем это вручную, что, конечно, является полным беспорядком.
Вопрос: Я бы хотел использовать способ рельсовой миграции для обработки изменений схемы, предпочтительно migratordotnet , но мог бы использовать любой другой, если его проще настроить.
Проблема в том, что migratordotnet требуется, чтобы строка соединения была объявлена в файле proj.build , и я не знаю их до времени выполнения.
Что было бы ДЕЙСТВИТЕЛЬНО полезно, так это какой-то метод, работающий на Application_Start , который применяет последнюю миграцию к каждой базе данных.
Как это можно сделать с помощью migratordotnet или подобного? Любые другие предложения приветствуются.
Спасибо!