Получение нескольких DBContexts использовать миграции с одной и той же базой данных
-
22-12-2019 - |
Вопрос
На основании образца проекта MVC5 я пытаюсь выучить правильный способ обрабатывать миграции.
В корневом каталоге у меня есть папка, называемая «DBContexts» с двумя контекстами.
Первый: IdentityContext.cs
public class IdentityContext : IdentityDbContext<ApplicationUser>
{
public IdentityContext()
: base("DefaultConnection")
{ }
}
.
Тогда у меня есть папка, называемая идентификационными миграциями с конфигурацией .CS
internal sealed class Configuration : DbMigrationsConfiguration<TryFive.Web.DbContexts.IdentityContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
MigrationsDirectory = @"DbContexts\IdentityMigrations";
}
protected override void Seed(TryFive.Web.DbContexts.IdentityContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
}
}
.
Тогда у меня есть mycontexts с аналогичными свойствами.
Когда я пытаюсь запустить команду «Обновить базу данных», я получаю сообщение об ошибке: The type 'TryFive.Web.DbContexts.IdentityContext' does not inherit from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. Migrations configuration types must extend from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'.
Любая идея о том, как исправить это или лучший способ сделать этот материал DBContext?
Решение
Предложение: Если вы просто выполняете образец проекта для изучения миграций, как вы говорите, придерживайтесь одного DBContext.Держите его простым - объединить ваши объекты в один DBContext, который наследуется от IdentityDbContext<ApplicationUser>
Удалите свои существующие папки Migrations, которые вы создали - и «Включить-миграцию» после удаления второго DBContext.Это поможет вам продолжить изучение миграции, а не изучать, как использовать два проекта DBContext в одном проекте.
также, @lajos, я не уверен, о котором вы говорите, но мой DBContext's никогда не унаследовал от DBMigrationsConfiguration - они наследуют от DBContext или IdentityDBContext.То, что вы ссылаетесь, - это класс MigrationsConfiguration, который генерируется при выпуске «включения-миграции» на проекте.Он используется для генерации миграций и высева данных.