Prima di spiegare il mio problema, ho una certa esperienza con le migrazioni di entità 5 e 6 del codice prima, eseguendo add-migration
/ update-database
e alcuni comandi più specifici dalla console di Package Manager. Tutta la cronologia delle migrazioni è stata gestita senza __MigrationHistory
tabella __MigrationHistory
.
Ora sto scrivendo un'app UWP e utilizzo sqlite di EntityFrameworkCore
. L'app è configurata per impalcare nuove migrazioni e lo fa correttamente.
Quando si applicano le migrazioni, l'app deve dedurre automaticamente, all'installazione e al primo avvio, se il database esiste e la versione corrente della migrazione del database. Può quindi applicare le procedure di migrazione pertinenti, inclusa la creazione del database, se necessario.
Attualmente, cerco di eseguire le migrazioni nel mio DbContext all'avvio:
public class MyContext : DbContext
{
public DbSet<SomeEntity> MyEntities { get; set; }
static MyContext()
{
using(var db = new MyContext())
{
db.Database.Migrate();
}
}
Questo funziona perfettamente per una nuova app al primo avvio. Al secondo avvio, tuttavia, o dopo l'aggiunta di una nuova migrazione, il metodo Migrate () ha esito negativo mentre le tabelle che sta tentando di creare esistono già.
SQLite Errore 1: "tabella \" MyEntities \ "esiste già '
Questo errore deriva dal rieseguire la migrazione che è stata precedentemente applicata. Il database stesso deve essere consapevole della sua storia di migrazione come precedentemente gestito con __EFMigrationHistory
. Attualmente questo tavolo non viene creato per me.
Sospetto che sia necessario creare manualmente una soluzione, magari creando la mia tabella __MigrationHistory e aggiornandola, come da questo post qui
Mi sono chiesto quali soluzioni le persone hanno utilizzato per questo problema, o se c'è qualcosa fuori dalla scatola che sono sciocco e mancante.
Fammi sapere se sono necessari ulteriori dettagli.
Per quanto mi è venuto in mente mentre ho lo stesso problema, ho scoperto che il database di debug (all'interno della cartella \ bin \ Debug) non ha la tabella __EFMigrationsHistory, mentre il database di produzione (root del tuo progetto di avvio) ha esso.
Forse potrebbe essere di aiuto per qualcun altro.