Код инфраструктуры Entity сначала переносит на несколько баз данных

code-first code-first-migrations ef-code-first entity-framework entity-framework-6

Вопрос

Допустим, у нас есть модель архитектуры веб-приложения, где у нас есть 1 база данных на 1 учетную запись. Структура базы данных для этих учетных записей одинакова и отличается только данными с помощью. Как настроить миграцию в первой модели кода.

Принятый ответ

Теперь у меня есть следующее решение. В основном методе или в global.asax что-то вроде этого:

    var migration_config = new Configuration();
    migration_config.TargetDatabase = new DbConnectionInfo("BlogContext");
    var migrator = new DbMigrator(migration_config);
    migrator.Update();
    migration_config.TargetDatabase = new DbConnectionInfo("BlogContextCopy");
    migrator = new DbMigrator(migration_config);
    migrator.Update();

Строки подключения, например, в файле app_config:

    var migration_config = new Configuration();
    migration_config.TargetDatabase = new DbConnectionInfo("BlogContext");
    var migrator = new DbMigrator(migration_config);
    migrator.Update();
    migration_config.TargetDatabase = new DbConnectionInfo("BlogContextCopy");
    migrator = new DbMigrator(migration_config);
    migrator.Update();

Конфигурационный класс и контекст:

    var migration_config = new Configuration();
    migration_config.TargetDatabase = new DbConnectionInfo("BlogContext");
    var migrator = new DbMigrator(migration_config);
    migrator.Update();
    migration_config.TargetDatabase = new DbConnectionInfo("BlogContextCopy");
    migrator = new DbMigrator(migration_config);
    migrator.Update();

Популярные ответы

В дополнение к вашему превосходному ответу вы можете использовать внешний файл конфигурации (например, «clients.json») вместо жесткого кодирования, поместить всю информацию о базе данных в пары ключ-значение в json-файл и загрузить ее во время запуска.

Затем, итерацией по парам ключ-значение, вы можете выполнить инициализацию.

clients.json :

{
  "DatabaseA": "DatabaseAConnectionString",
  "DatabaseB": "DatabaseBConnectionString",
  "DatabaseC": "DatabaseCConnectionString",
  ...
}

Предоставьте метод обработки миграции:

{
  "DatabaseA": "DatabaseAConnectionString",
  "DatabaseB": "DatabaseBConnectionString",
  "DatabaseC": "DatabaseCConnectionString",
  ...
}

Затем во время запуска (я использую OWIN, так что это в моем Startup.cs , также может быть global.asax.cs ):

{
  "DatabaseA": "DatabaseAConnectionString",
  "DatabaseB": "DatabaseBConnectionString",
  "DatabaseC": "DatabaseCConnectionString",
  ...
}

Работает как прелесть для меня :)




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему