Conversione di un modello basato su EDMX EF6 in EF Core

EF Core non supporta il formato di file EDMX per i modelli. L'opzione migliore per convertire questi modelli consiste nel generare un nuovo modello basato su codice dal database per l'applicazione.

Installare pacchetti NuGet di EF Core

Installare il pacchetto NuGet Microsoft.EntityFrameworkCore.Tools.

Rigenerare il modello

È ora possibile usare la funzionalità di reverse engineer per creare un modello basato sul database esistente.

Eseguire il comando seguente in Console di Gestione pacchetti (Strumenti -> Gestione pacchetti NuGet -> Console Gestione pacchetti). Vedere Gestione pacchetti Console (Visual Studio) per le opzioni dei comandi per eseguire lo scaffolding di un subset di tabelle e così via.

Scaffold-DbContext "<connection string>" <database provider name>

Ecco ad esempio il comando per eseguire lo scaffolding di un modello dal database blogging nell'istanza di SQL Server Local DB.

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

Rimuovere il modello EF6

A questo punto si rimuove il modello EF6 dall'applicazione.

È consigliabile lasciare installato il pacchetto NuGet EF6 (EntityFramework), perché EF Core ed EF6 possono essere usati side-by-side nella stessa applicazione. Tuttavia, se non si intende usare EF6 in nessuna area dell'applicazione, la disinstallazione del pacchetto consentirà di concentrare gli errori del compilatore su parti di codice che richiedono attenzione.

Aggiornare il codice

A questo punto, è importante risolvere gli errori di compilazione ed esaminare il codice per verificare se il comportamento cambia tra EF6 e EF Core influirà sull'utente.

Testare la porta

Solo perché l'applicazione viene compilata, non significa che sia stata eseguita correttamente la conversione in EF Core. Sarà necessario testare tutte le aree dell'applicazione per assicurarsi che nessuna delle modifiche del comportamento abbia effetti negativi sull'applicazione.

Altre considerazioni

EF Core non supporta il EntityClient provider e pertanto è necessario eseguire la migrazione di query EntitySQL a LINQ o FromRawSql.

Inoltre, non è disponibile alcun supporto per entityClient stringa di connessione s.

Per altre considerazioni, vedere la guida completa alle differenze tra EF6 ed EF Core.