11

Ho problemi con qualcosa nel metodo Seed nel numero Configure.cs per il mio processo di migrazione code-first della mia entità 6. Sto eseguendo il comando Update-Database -verbose nello Package Manager Console e ho provato a impostare i punti di interruzione (in VS studio web express 2013) nel codice C# del metodo Seed. Ma anche se lo metto nella prima istruzione del metodo, non viene colpito, anche se la console visualizza running seed method (e successivamente si interrompe a causa del mio errore)È possibile impostare un punto di interruzione nel primo metodo di trasferimento delle migrazioni nel codice EF?

Quindi è possibile impostare in qualche modo i breakpoint nel metodo Seed? In caso contrario, qual è il modo migliore per eseguire il debug di quel codice?

+1

funziona questo aiuto: http://stackoverflow.com/a/26567885/1336590? Fondamentalmente, esegui 'Seed' attraverso l'applicazione e non nella console PM. – Corak

+0

Vedere questo blog: http://blogs.msdn.com/b/rickandy/archive/2013/02/12/seeding-and-debugging-entity-framework-ef-dbs.aspx – Colin

risposta

31

Non è possibile direttamente nel codice sorgente ma è possibile collegare il debugger tramite codice sorgente. Si prega di consultare this link per i dettagli:

if (System.Diagnostics.Debugger.IsAttached == false) 
    System.Diagnostics.Debugger.Launch(); 

L'altra opzione sarebbe quella di eseguire la migrazione tramite codice sorgente come spiegato in precedenza:

var configuration = new Configuration(); 
var migrator = new DbMigrator(configuration); 
migrator.Update(); 
+0

Spiacente, ma il tuo link è morto. .. – EluciusFTW

+0

Stava lavorando vista ore fa ... questa è una versione memorizzata nella cache; http://webcache.googleusercontent.com/search?q=cache:http://patrickdesjardins.com/blog/how-to-debug-entity-framework-migration-seeding&strip=1 –

+0

Ecco un altro articolo che ho trovato cercando questa stessa domanda: http://blog.theodybrothers.com/2015/09/debugging-your-seed-method-when-running.html – CesarD

1

Update-Database termina la sessione di debug in modo da non poter impostare un punto di interruzione. Dovrai eseguire il tuo metodo Seed da un'altra parte del tuo codice, come un metodo fittizio, che puoi avviare dall'interno della tua app.