2013-12-04 2 views
0

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

У меня есть x одинаковые схемы базы данных, по одному на каждого клиента.

У меня также есть модели для каждой из этих баз данных и я могу развернуть миграцию, которая создает новый клон. До этого момента я использовал PHP и скрипты для прокрутки всех схем и обновления любых изменений в структуре. Мы переходим к C# и EF6 из-за Web API 2 и маршрутизации атрибутов.

Мой вопрос: Есть ли способ:

  1. Развертывание команды сборки, которая будет делать то, что update-database бы сделать для миграции, и передать его имя базы данных (для того, чтобы создать новый клон схему базы данных учетных записей

  2. Развертывание команды сборки, которые могли бы сделать то, что update-database бы рекурсивно каждого из целевых баз данных?

ответ

0

«у меня есть х идентичные схемы базы данных s, один за клиента "
и
„У меня также есть модели для каждого из этих баз данных“

вы имели в виду у меня также есть модели для каждого из этих схем?

Объекты модели Ef связаны с именем схемы/таблицы.

entity.ToTable ("tableName", "schemaName");

Так что, если каждый клиент получает свою собственную схему, то каждая модель имеет все таблицы в этой схеме, а клиент получает свою собственную модель. Итак, как мне запустить базу данных обновлений для каждой модели контекста. Я еще один способ взглянуть на проблему.

Итак, ответ заключается в том, как вы отслеживаете схему на информацию о клиенте.

Powershell migrate.exe approach может быть интересным для вас, чтобы вы могли инициировать миграцию во многих контекстных моделях.

Custom migration operations также может быть интересным. Rowan - разработчик EF.

EDIT: на основе автоматической миграции комментарий, это стоит посмотреть Managing migration triggers in code

+0

Благодаря Фил. Для уточнения: у меня есть набор моделей, которые строят схему базы данных, которая затем клонируется несколько раз, один раз для каждого клиента. Подключение к правильному контексту не является проблемой, для которой я настроил обработчик. Я также обнаружил, что я могу использовать context.Database.CreateIfNotExists() для создания новой базы данных. Спасибо, я посмотрю на инструменты, которые вы связали. У меня есть подозрение, что это правильный ответ, поэтому я пойду и отметю его. Я чувствую, что не делал достаточно исследований по этому вопросу в первую очередь. –

+0

, если вы собираетесь использовать Automated Migrations, тогда вы можете перебрать список своих клиентских баз данных и активировать Migrate. Я скоро добавлю ссылку –

+0

Легендарный! Спасибо, Фил :) –