Entity Framework - Migrazione

In Entity Framework 5 e nelle versioni precedenti di Entity Framework, il codice è stato suddiviso tra le librerie principali (principalmente System.Data.Entity.dll) fornite come parte di .NET Framework e le librerie aggiuntive (principalmente EntityFramework.dll) sono state distribuite e spedito tramite NuGet come illustrato nel diagramma seguente.

In Entity Framework 6, anche le API principali che in precedenza facevano parte di .NET Framework vengono fornite e distribuite come parte del pacchetto NuGet.

Ciò era necessario per consentire a Entity Framework di essere reso open source. Tuttavia, di conseguenza, le applicazioni dovranno essere ricostruite ogni volta che è necessario migrare o aggiornare l'applicazione da versioni precedenti di Entity Framework a EF 6.

Il processo di migrazione è semplice se l'applicazione usa DbContext, fornito in EF 4.1 e versioni successive. Ma se la tua applicazione è ObjectContext, è richiesto poco più di lavoro.

Diamo un'occhiata ai seguenti passaggi che devi eseguire per aggiornare un'applicazione esistente a EF6.

Step 1 - Il primo passaggio è scegliere come target .NET Framework 4.5.2 e successivamente fare clic con il pulsante destro del mouse sul progetto e selezionare le proprietà.

Step 2 - Fare nuovamente clic con il pulsante destro del mouse sul progetto e selezionare Gestisci pacchetti NuGet ...

Step 3- Nella scheda Online seleziona EntityFramework e fai clic su Installa. Assicurarsi che i riferimenti all'assembly a System.Data.Entity.dll vengano rimossi.

Quando installi il pacchetto NuGet EF6, dovrebbe rimuovere automaticamente tutti i riferimenti a System.Data.Entity dal tuo progetto per te.

Step 4 - Se si dispone di un modello creato con EF Designer, sarà necessario aggiornare anche i modelli di generazione del codice per generare codice compatibile con EF6.

Step 5 - In Esplora soluzioni nel file edmx, elimina i modelli di generazione del codice esistenti che in genere saranno denominati <edmx_file_name> .tt e <edmx_file_name> .Context.tt.

Step 6 - Apri il tuo modello in EF Designer, fai clic con il pulsante destro del mouse sull'area di progettazione e seleziona Aggiungi elemento di generazione del codice ...

Step 7 - Aggiungere il modello di generazione del codice EF 6.x appropriato.

Inoltre, genererà automaticamente codice compatibile con EF6.

Se le tue applicazioni usano EF 4.1 o versioni successive, non sarà necessario modificare nulla nel codice, perché gli spazi dei nomi per i tipi DbContext e Code First non sono cambiati.

Tuttavia, se l'applicazione utilizza una versione precedente di Entity Framework, i tipi come ObjectContext che erano precedentemente in System.Data.Entity.dll sono stati spostati in nuovi spazi dei nomi.

Step 8 - Sarà necessario aggiornare le direttive using o Import per compilare su EF6.

La regola generale per le modifiche allo spazio dei nomi è che qualsiasi tipo in System.Data. * Viene spostato in System.Data.Entity.Core. *. Di seguito sono riportati alcuni di loro:

  • System.Data.EntityException ⇒ System.Data.Entity.Core.EntityException
  • System.Data.Objects.ObjectContext ⇒ System.Data.Entity.Core.Objects.ObjectContext;
  • System.Data.Objects.DataClasses.RelationshipManager ⇒ System.Data.Entity.Core.Objects.DataClasses.RelationshipManager;

Alcuni tipi si trovano negli spazi dei nomi Core perché non vengono utilizzati direttamente per la maggior parte delle applicazioni basate su DbContext.

  • System.Data.EntityState ⇒ System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute

Il progetto Entity Framework esistente funzionerà in Entity Framework 6.0 senza modifiche importanti.