Domanda

Sto usando EntityFramework 4.3 Versione beta e la sua struttura di migrazione dei dati.Ho scritto il seguente codice per generare una migrazione personalizzata e applicarla al DB.

MigrationScaffolder ms=new MigrationScaffolder(configuration);
ScaffoldedMigration scaffoldedMigration= ms.Scaffold("Migration");

DbMigrator dbMigrator = new DbMigrator(configuration);
dbMigrator.Update(scaffoldedMigration.MigrationId);
.

La funzione di scaffolding ha funzionato bene e ha generato una migrazione correttamente.

Ma un'eccezione arriva e dice

.

"La migrazione target specificata '201201230637551_MIGRAZIONE' NON esistere.Assicurarsi che la migrazione target si riferisca a una migrazione esistente ID. "

Questo succede da allora questa è una versione beta?Qualcuno può aiutarmi a risolverlo.

Grazie.

È stato utile?

Soluzione

Questo non è perché stavi usando una versione beta.La classe MigrationsCaffolder è solo quella di generare una classe di configurazione.Quel file generato non viene aggiunto automaticamente alla soluzione.Se vogliamo passarlo nel metodo dbmigrator.update (), dovremmo prima aggiungere il file generato nella soluzione prima.Quindi dovremmo fare un'istanza di quella classe e passarlo nel metodo di aggiornamento () come questo.

{
    DbMigrationsConfiguration myConfiguration=new MyConfiguration();
    DbMigrator dbMigrator = new DbMigrator(configuration);
    dbMigrator.Update(myConfiguration);
}
.

Qui MyConfiguration è la classe generata.

Inoltre, non è necessario applicare le migrazioni nel tuo progetto in questo modo.Invece puoi usare:

{
    DbMigrationsConfiguration myConfiguration=new DbMigrationsConfiguration(){
       AutomaticMigrationsEnabled = true;
       AutomaticMigrationDataLossAllowed = true;
    }
    DbMigrator dbMigrator = new DbMigrator(configuration);
    dbMigrator.Update(myConfiguration);
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top