Database.EnsureCreated non funziona

c# entity-framework-core

Domanda

Sto giocando con le versioni di Entity Framework 7 elencate di seguito

"EntityFramework.Core": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final"

La mia classe DatabaseContext è molto semplice

public class WorldContext : DbContext
{
    public DbSet<Trip> Trip { get; set; }
    public DbSet<Stop> Stop { get; set; }

    public WorldContext()
    {
        Database.EnsureCreated();
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connectionString = Startup.Configuration["Data:WorldContextConnection"];

        optionsBuilder.UseSqlServer(connectionString);
        base.OnConfiguring(optionsBuilder);
    }
}

Sto riscontrando un problema quando si colpisce il metodo Database.EnsureCreated nel costruttore. Per quanto posso capire, questo metodo dovrebbe garantire che il database sia creato se non esiste, altrimenti non dovrebbe fare nulla. Quando eseguo il debugging del codice della classe DatabaseContext, premo il punto di interruzione impostato nel metodo Database.EnsureCreated , quando l'esecuzione continua, il punto di interruzione viene colpito una seconda volta (non era previsto), quindi il costruttore DatabaseContext viene inserito due volte per qualche motivo. Al secondo colpo viene lanciata la seguente eccezione

inserisci la descrizione dell'immagine qui

Anche se il database esiste, il metodo EnsureCreated non dovrebbe ignorarlo? Mi sto perdendo qualcosa qui?

Risposta accettata

Non chiamare assicurati nel tuo costruttore, ma chiamalo una volta durante l'avvio dell'app




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché