Sono nuovo di EF e ho ereditato un progetto che apparentemente utilizzava lo sviluppo di un database.
L'ambiente di produzione utilizza SQL Azure e sto essenzialmente cercando di capire l'approccio standard per l'aggiornamento del suo schema.
Inizialmente, ho provato ad abilitare le migrazioni per il progetto EF, prima di tentare il processo qui descritto: http://www.dotnet-tricks.com/Tutorial/entityframework/R54K181213-Understanding-Entity-Framework-Code-First-Migrations.html ... ma ho scoperto che funziona solo per lo sviluppo in codice.
Ora quello che ho intenzione di fare è di apportare modifiche al database che sto utilizzando nel mio ambiente dev locale, quindi utilizzare il mio database locale per aggiornare il modello nel mio progetto EF.
Da lì, vorrei distribuire le modifiche all'ambiente SQL Azure mantenendo tutti i record esistenti nel database, ma il modo migliore per farlo non è chiaro.
C'è qualcosa nello strumento EF che genererà script di aggiornamento che non rilasciano tabelle? Devo scrivere manualmente gli script di aggiornamento? Le persone utilizzano in genere gli strumenti di SQL Server per eseguire l'aggiornamento?
Il mio iniziale su Google non ha trovato la risposta alla domanda, sfortunatamente, anche se sembra qualcosa che dovrebbe essere un problema estremamente comune.
La migrazione EF viene utilizzata per lo sviluppo del codice prima, non per il database. Ma puoi ancora usarlo se fai il reverse engineering dal database. Per poterlo fare è necessario installare gli strumenti di Entity Framework 6 , ma ciò richiederà alcuni sforzi, come
Enable-Migrations
, Add-Migration InitialCreate
, Update-Database ConnectionStringName NewDatabase
) Enable-Migrations
, Add-Migration UpgradeToVersionX
, Update-Database ConnectionStringName NewDatabase -Script
) Anche il reverse engineering del database EF ha ancora problemi legati al vincolo univoco.
Ma dal momento che si sta lavorando con il database per primo, modificando direttamente lo schema dal database, il modo più semplice sarebbe utilizzare Schema Comparer di SQL Server Data Tools .
Lo script generato sarebbe tanto vicino quanto scrivere lo script manualmente, probabilmente meno errori umani, come errori di battitura.