2

J'ai 2 DbContexts:ASP.NET de base multiples dbcontext ne peut pas ajouter la migration

services.AddDbContext<ConfigDbContext>(options => options.UseSqlServer(Configuration["Data:ConfigSQLServer:ConnectionString"].ToString(), t => t.MigrationsAssembly("App.Web"))); 

services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration["Data:AppSQLServer:ConnectionString"].ToString(), t => t.MigrationsAssembly("App.Web"))); 

lorsque je tente de lancer

dotnet ef migrations add Initial -c AppDbContext 

Je reçois:

No DbContext named 'AppDbContext' was found 

Si je lance:

dotnet ef dbcontext list 

le résultat est:

FullNamespace.ConfigDbContext 

Il ne seam pas à trouver la deuxième DbContext AppDbContext

ConfigDbCOntext:

public class ConfigDbContext : DbContext 
{ 
    public ConfigDbContext() 
    { 

    } 

    public ConfigDbContext(DbContextOptions<ConfigDbContext> options) : base(options) 
    { 

    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
    } 
} 

AppDbContext:

public class AppDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid> 
{ 
    public AppDbContext() 
    { 

    } 

    public ConfigDbContext(DbContextOptions<AppDbContext> options) : base(options) 
    { 

    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
    } 
} 

Répondre

0

Peut-être que vous êtes manquant l'option UserSql? aime:

services.AddDbContext<ApplicationDbContext>(options => 
      options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 

aussi - Pourriez-vous votre mise en œuvre de AppDbContext?

+0

J'ai fait une modification à ma question – user2818430

+0

Merde ... Et si vous changez l'ordre autour, il ne trouve que le premier? – JanivZ

0

J'ai des configurations similaires, sauf que mon DbContext et mon IdentityDbCotenxt vivent dans différents assemblages autres que le projet web.

ConfigDbContext

// Remove the parameter-less constructor 

public class ConfigDbContext : DbContext 
{ 
    public ConfigDbContext(DbContextOptions<ConfigDbContext> options) : base(options) 
    { } 

    rotected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
    } 
} 

AppDbContext

// Remove the parameter-less constructor 
// Rename the constructor to AppDbContext, instead of ConfigDbContext 

public class AppDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid> 
{ 
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) 
    { } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
    } 
} 

aussi dans mon IdentityDbContext, si vous changez la clé primaire à Guid, je dois passer outre AppUserClaim, AppUserRole, AppUserLogin, AppRoleClaim et AppUserToken ainsi.

Mon exemple de IdentityDbContext

public class AppIdentityDbContext : IdentityDbContext<AppUser, AppRole, Guid, AppUserClaim, AppUserRole, 
    AppUserLogin, AppRoleClaim, AppUserToken> 
{ 
    public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) 
     : base(options) 
    { 
    } 

    protected override void OnModelCreating(ModelBuilder builder) 
    { 
     base.OnModelCreating(builder); 

     builder.Entity<AppUser>().ToTable("User"); 
     builder.Entity<AppRole>().ToTable("Role"); 
     builder.Entity<AppUserRole>().ToTable("UserRole"); 

     builder.Entity<AppUserClaim>().ToTable("UserClaim"); 
     builder.Entity<AppRoleClaim>().ToTable("RoleClaim"); 

     builder.Entity<AppUserLogin>().ToTable("UserLogin"); 
     builder.Entity<AppUserToken>().ToTable("UserToken"); 
    } 
} 

Je ne pense pas que ce soit la question, mais si mes suggestions du début ne permettent pas de résoudre la question, pourrait donner à ce procès.

0

AppDbContext devrait être:

public class AppDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid> 
{ 
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) 
    { 

    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
    } 
}