Несколько контекстов БД в одной и той же БД и приложении в EF 6 и первые миграции кода

Я новичок в Entity Framework. Я пытаюсь настроить приложение MVC, использующее EF 6. Я использую First First Migrations. Я использую Areas в приложении и хотел бы иметь разные DbContexts в каждой области, чтобы разбить его. Я знаю, что EF 6 имеет ContextKey, но я не могу найти полную информацию о том, как его использовать. В настоящее время я могу использовать только миграцию по одному контексту за раз.

Может ли кто-нибудь дать пример с достаточной детализацией для нового человека в EF, как я, чтобы понять и использовать.

Entity Framework 6 добавила поддержку нескольких DbContext s, добавив флаги -ContextTypeName и -MigrationsDirectory . Я просто запускал команды в консоли диспетчера пакетов и вставлял результат ниже …

Если у вас есть 2 DbContext s в вашем проекте и вы запускаете enable-migrations , вы получите сообщение об ошибке (как вы, наверное, уже знаете):

 PM> enable-migrations More than one context type was found in the assembly 'WebApplication3'. To enable migrations for 'WebApplication3.Models.ApplicationDbContext', use Enable-Migrations -ContextTypeName WebApplication3.Models.ApplicationDbContext. To enable migrations for 'WebApplication3.Models.AnotherDbContext', use Enable-Migrations -ContextTypeName WebApplication3.Models.AnotherDbContext. 

Таким образом, вы должны запускать enable-migrations для каждого DbContext отдельно. И вам нужно указать папку для каждого файла Configuration.cs который будет создан …

 PM> Enable-Migrations -ContextTypeName ApplicationDbContext -MigrationsDirectory Migrations\ApplicationDbContext Checking if the context targets an existing database... Code First Migrations enabled for project WebApplication3. PM> Enable-Migrations -ContextTypeName AnotherDbContext -MigrationsDirectory Migrations\AnotherDbContext Checking if the context targets an existing database... Code First Migrations enabled for project WebApplication3. 

Чтобы добавить миграции для каждого DbContext , вы делаете это так, указав полное имя classа Configuration :

 PM> Add-Migration -ConfigurationTypeName WebApplication3.Migrations.ApplicationDbContext.Configuration "InitialDatabaseCreation" Scaffolding migration 'InitialDatabaseCreation'. The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration InitialDatabaseCreation' again. PM> Add-Migration -ConfigurationTypeName WebApplication3.Migrations.AnotherDbContext.Configuration "InitialDatabaseCreation" Scaffolding migration 'InitialDatabaseCreation'. The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration InitialDatabaseCreation' again. 

И вы запускаете update-database же:

 PM> Update-Database -ConfigurationTypeName WebApplication3.Migrations.ApplicationDbContext.Configuration Specify the '-Verbose' flag to view the SQL statements being applied to the target database. Applying explicit migrations: [201402032113124_InitialDatabaseCreation]. Applying explicit migration: 201402032113124_InitialDatabaseCreation. Running Seed method. PM> Update-Database -ConfigurationTypeName WebApplication3.Migrations.AnotherDbContext.Configuration Specify the '-Verbose' flag to view the SQL statements being applied to the target database. Applying explicit migrations: [201402032113383_InitialDatabaseCreation]. Applying explicit migration: 201402032113383_InitialDatabaseCreation. Running Seed method. 

Надеюсь это поможет.

  • Как тестировать модули с Entity Framework 6, если вы беспокоитесь?
  • Мульти-арендатор с кодом First EF6
  • EF Code First: как получить случайные строки
  • Ключевое слово не поддерживается: «источник данных», инициализирующий контекст платформы Entity Framework
  • Как сделать Entity Framework Data Context Readonly
  • Предотrotation атаки SQL Injection: с чего начать
  • Oracle.ManagedDataAccess.EntityFramework - ORA-01918: пользователя 'dbo' не существует
  • Структура Entity PostgreSQL
  • ADO.Net Entity Framework Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker
  • Свойство «имя» является частью ключевой информации объекта и не может быть изменено. Основы Entity Framework
  • Сохранение данных многих из многих отношений в MVC Создание представления
  • Давайте будем гением компьютера.