Vários DbContexts usar Migrações, com o mesmo banco de dados
-
22-12-2019 - |
Pergunta
Com base em uma amostra MVC5 projeto que eu estou tentando aprender a maneira correta de lidar com as migrações.
No diretório raiz, eu tenho uma pasta chamada "DbContexts" com dois Contextes.
Primeiro:IdentityContext.cs
public class IdentityContext : IdentityDbContext<ApplicationUser>
{
public IdentityContext()
: base("DefaultConnection")
{ }
}
então eu tenho uma pasta chamada IdentityMigrations com a Configuração.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" }
// );
//
}
}
Então eu tenho MyContexts com propriedades semelhantes.
Quando eu tento executar o "Update-Banco de dados de comando" recebo esta mensagem de erro: 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'.
Alguma idéia de como consertar isso ou uma maneira melhor para fazer isto DbContext coisas?
Solução
Sugestão:Se você está apenas fazendo um projeto de exemplo para aprender migrações, como você diz, para manter um DbContext.Mantenha-o simples - mesclar suas entidades em um que herda de DbContext IdentityDbContext<ApplicationUser>
Exclua o existente migrações pastas que você criou e re "enable-migrations" depois de eliminar o seu segundo DbContext.Isso vai ajudar você a continuar a aprendizagem migrações, em vez de aprender como usar dois DbContext em um projeto.
Também, @Lajos, eu não tenho certeza de que MVC você está falando, mas meu DbContext é nunca ter herdado de DbMigrationsConfiguration - eles herdar de DbContext, ou IdentityDbContext.O que você está se referindo é o MigrationsConfiguration classe que é gerado quando a emissão de "enable-migrations" em um projeto.Ele é usado para gerar as migrações e a propagação de dados.