10

Ho avviato un nuovo progetto MVC con EntityFramework -Version 6.1.2 utilizzando l'ultimo aggiornamento di Visual Studio 2013. Ho effettuato un paio di migrazioni e aggiornato il database. Dopo questo ho controllato il progetto su un altro computer e aprii con Visual Studio 2015 CTP 6.Come posso gestire le migrazioni EF 6 in Visual Studio 2015?

Se vado nella console package manager e si tenta di eseguire qualsiasi comando di migrazione, non sono riconosciuti:

add-migrations: il termine "add-migrations" non è riconosciuto come nome di un cmdlet, funzione, file di script o programma eseguibile. Controlla l'ortografia del nome o se è stato incluso un percorso, verifica che il percorso sia corretto e riprova.

Come posso gestire le mie migrazioni utilizzando Entity Framework 6 in Visual Studio 2015?

+1

E 'ancora solo CTP ... (anteprima, non inteso per uso di produzione) .. quindi direi di sì, è abbastanza normale. non aspettatevi funzionalità complete prive di bug di una versione standard – walther

+0

Avete installato il pacchetto NuGet di EntityFramwork sul secondo computer: ho capito che l'azione abiliterà i comandi di PowerShell. – ErikEJ

+0

Ciao, Luca. Sto avendo questo problema pure. Ho pesantemente modificato la tua domanda. Assicurati di non aver cambiato il tuo intento. In caso contrario, aggiungerò una taglia. –

risposta

6

Hai provato a disinstallare e reinstallare il pacchetto NuGet di EntityFramwork? Ho avuto lo stesso problema descritto e lo ha risolto.

+0

sembra che rc uscirà tra qualche giorno, quindi aspetto di vedere come funziona. –

+1

L'ho fatto su VS 2015 RTM e ha risolto il mio problema che era lo stesso della domanda. – kenstone

-1

Ho fatto alcuni controlli, ma io RECAP cercando di coprire tutto lo scenario ef:

EF7 in asp.net 5 progetto: la gestione delle migrazioni è stata modificata ed ora è gestita utilizzando il comando migrazione ef.
ef7 in un'applicazione .net tradizionale: è richiesto il framework 4.5.1, ma a questa pagina esing ef 7 in a .net app è possibile trovare una buona guida su come utilizzare ef 7 in un'app tradizionale. È importante aggiungere il pacchetto EntityFramework.Commands.
ef6: non funziona con asp.net 5, quindi anche se è possibile installarlo, la compilazione verrà interrotta. Stessa situazione per la maggior parte dei driver ef effettivi come quelli per mongodb e Postgresql. Se non sei sicuro che sia un driver compatibile con ef 7, non installarlo. Al momento penso che tu possa contare solo su sqlserver e inMemory.
per asp.net 4 applicazioni, l'effettiva installazione dei comandi fa parte del pacchetto framework entità stesso, quindi verrà installata alla prima installazione del pacchetto (come giustamente sottolineato sopra).
In alcune situazioni, in un ambiente in cui non è stato installato il pacchetto ef, copiando un progetto asp.net 4 e iniziando a lavorare su di esso, può dare questo problema, che scompare magicamente quando per qualsiasi motivo il pacchetto è installato.

+1

EF6 funziona bene con asp.net 5 con un'eccezione: non c'è supporto nel gestore pacchetti (powershell) per le migrazioni. –

+0

Ho visto più report che non funzionano con l'identità fornita con asp.net 5, e non funzionano con il meccanismo Di che è al centro di asp.net 5. Penso che tu possa usare a tuo rischio . –

2

OK, quindi ho avuto questo problema con un progetto EF6 che ho avviato in VS2013 e aggiornato a VS2015 RC. I comandi erano disponibili se l'ho aperto in VS2013 ma non in VS2015. Quello che ho trovato per risolvere il problema in modo rapido e semplice era quello di utilizzare il comando pacchetto di reinstallazione:

Update-Package –reinstall EntityFramework 

questo riparato qualsiasi comando errori mancante e poi mi ha permesso di iniziare gli aggiornamenti del database e creare nuove migrazioni all'interno di VS2015.

0

Avevo problemi simili in quanto non riuscivo a eseguire Add-Migration dalla console di Gestione pacchetti, anche se avevo riscontrato un errore diverso. Purtroppo, la reinstallazione di EntityFramework non funzionava per me, forse perché avevo ASP.Net 5 progetti nella stessa soluzione. (Questo non era per un tradizionale csproj, in quanto richiede resx che non sono supportati per quanto ne so.)

ho finito per creare un'applicazione console, che fa riferimento al progetto che comprendeva le mie migrazioni, e ha aggiunto il seguente:

var configuration = GetConfiguration(); 

    var scaffolder = new MigrationScaffolder(configuration); 

    scaffolder.Namespace = configuration.MigrationsNamespace; 

    var scaffoldedMigration = scaffolder.Scaffold(name); 

    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".cs", scaffoldedMigration.UserCode); 
    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".Designer.cs", scaffoldedMigration.DesignerCode); 
    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".resx", BuildResx(scaffoldedMigration.Resources)); 

GetConfiguration restituisce un'istanza della classe *.Migration.Configuration. name è il nuovo nome della migrazione. Per impostazione predefinita, questo codice viene inserito nella cartella Debug dell'app della console; trascina e rilascia da lì in Visual Studio nella tua cartella Migration e dovrebbe fare il trucco.

Successivamente ho scoperto che questo era praticamente lo stesso di https://stackoverflow.com/a/20382226/195653 ma per ragioni completamente diverse.

0

Update-Package EntityFramework ... dovrebbe fare il trucco.

+1

Quando si risponde aggiungere ulteriori informazioni senza semplicemente pubblicare la risposta. – tarzanbappa

0

Ho eseguito tutte le combinazioni di reinstallare o disinstallare e installare EntityFramework più la chiusura e la riapertura di VS. L'unica cosa che ha funzionato è stata l'eliminazione dei pacchetti di cartelle nella mia cartella della soluzione e la ricostruzione della soluzione per forzare tutti i pacchetti da scaricare.

Problemi correlati