2015-03-27 10 views
50

Ho giocato con Entity Framework 7 e ASP.NET 5 per un nuovo progetto su cui sto lavorando, ma ho raggiunto un blocco stradale. Il team a cui sto lavorando utilizza un approccio allo sviluppo DBA-first; il database è progettato da DBA e quindi gli sviluppatori modificano il codice per compensare le modifiche del modello.Esiste un generatore di POCO basato su Database 7 di Entity Framework?

Utilizzando EF6, questo funziona bene, poiché è possibile aggiornare il codice semplicemente utilizzando la funzionalità di "aggiornamento" del progettista EDMX. Un clic, otteniamo le nuove classi e abbiamo finito. Tuttavia, in EF7, tutto è diverso. Non c'è altro designer, e dovremmo usare Code-First, che secondo alcuni post sul blog del team EF, dovrebbe supportare anche la generazione del codice "Database-First".

Tuttavia, non riesco a capire come eseguire questa operazione con Visual Studio 2015 CTP6 in un'applicazione ASP.NET 5. Il supporto degli strumenti esiste ancora, o sono sfortunato? Ed è addirittura arrivato?

+0

cercare "codice reverse engineer prima" – DLeh

+1

Sì, ho passato alcuni giorni a cercare. Un sacco di informazioni su come fare questo con EF6, ma con EF7 non sembra essere un modo. Per ora ho creato un progetto EF6, ho eseguito il reverse-engineering e copiato i file nel mio progetto EF7 (con alcune modifiche dovute a spazi dei nomi inesistenti in EF7), ma a lungo termine Avrò bisogno di una soluzione più stabile. –

+1

Non penso che siano abbastanza diversi da fare una grande differenza. Penso che EF7 sia ancora in beta, quindi probabilmente non c'è ancora il pieno supporto per esso. https://github.com/aspnet/EntityFramework/releases – DLeh

risposta

51

Negli ultimi bit, è possibile utilizzare il prompt dei comandi dnx e dei comandi PowerShell per fare questo, sì

Scaffold-DbContext '<connectionString>' EntityFramework.MicrosoftSqlServer 

o

dnx ef dbcontext scaffold "<connectionString>" EntityFramework.MicrosoftSqlServer 

o (da EF Nucleo RC2)

dotnet ef dbcontext scaffold "<connectionString>" Microsoft.EntityFrameworkCore.SqlServer 

È necessario installare i pacchetti EntityFramework.Commands e EntityFramework.MicrosoftSqlServer.Design per il comm e per lavorare

+0

Per favore, dimmi dove eseguire questo comando .. dove trovare il prompt dei comandi di dnx – Pooran

+1

mio cattivo .. ho capito http://blogs.msdn.com/b/sujitdmello/archive/2015/04/23/step-by -step-installation-instructions-for-getting-dnx-on-your-laptop.aspx – Pooran

12

Questo può essere fatto utilizzando la console del gestore pacchetti NuGet o il prompt dei comandi. Ho provato con il prompt dei comandi. Dopo la navigazione verso la cartella di progetto nella riga di comando, ho usato un comando simile:

dnx ef dbcontext scaffold "Data Source=myServerName; Initial Catalog=myDatabaseName; Integrated Security=True" EntityFramework.SqlServer 

ho ottenuto gli errori sui pacchetti mancanti:

EntityFramework.Commands

EntityFramework.SqlServer.Design

seguito da questo comando prima di procedere:

dnu restore 

Il/i pacchetto/i richiesto/i richiesto/i può variare in base al (i) quadro (i) indicato (i) nel file project.json.

Se non è possibile eseguire il comando dnx o altri comandi correlati nel prompt dei comandi, seguire il collegamento THIS che è stato menzionato nei commenti di un'altra risposta.

P.S.: Ecco l'elenco corrente di comando [al momento della scrittura, ultimo aggiornamento 21 agosto]:

ASP.NET - EntityFramework Wiki -- NuGet/DNX Commands

+1

aggiunto una risposta separata per la nuova sintassi per .NET Core RC2 (maggio 2016) –

8

Ecco i parametri aggiornati per RC2 di.Nucleo NET (Maggio 2016)

dotnet ef dbcontext scaffold -c RRStoreContext -o Model 
"Data Source=(local);Initial Catalog=DBNAME;Integrated Security=True"  
Microsoft.EntityFrameworkCore.SqlServer --force 

Nota che Microsoft.EntityFrameworkCore.SqlServer è il nuovo nome per il pacchetto che deve essere utilizzato nel comando. Ho aggiunto il parametro force per sovrascrivere i file esistenti. Il parametro 'o' è il nome della directory di output. Ed è ora dotnet anziché dnx.

A partire dalla versione corrente le dipendenze avete bisogno nel vostro project.json sono

"dependencies": { 
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final", 
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final", 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "type": "build", 
     "version": "1.0.0-preview1-final" 
    } 
    }, 

Nota: Tipo di 'costruire' significa che qualsiasi referenziare la tua assemblea non avrà questa DLL come dipendenza dal momento che è necessaria solo per utensili.

+0

Dove posso trovare la documentazione completa su tale comando? –

+0

Inoltre, vale la pena notare che il flag --force sovrascrive i file esistenti –

+0

E il 'dotnet ef --help' è piuttosto buono. –

Problemi correlati