Aggiorna EF 4 EDMX a EF 6

La mia applicazione utilizza un database prima EDMX in EF 4. Vorrei aggiornare tutto a EF 6. Dopo aver ottenuto EF 6 con NuGet ho dovuto apportare molte modifiche alle mie classi che usano il mio modello EF, perché i namespace sono stati modificato in EF 6. Poi mi sono reso conto che il codice generato dal mio EDMX utilizza anche gli spazi dei nomi sbagliati ecc. Non sto usando un T4 personalizzato finora.

Come aggiornare il mio EDMX esistente a EF 6.

Grazie.

  1. Elimina i tuoi vecchi file .tt
  2. Apri il file edmx in modalità designer (così puoi vedere il tuo modello)
  3. Fai clic destro su uno spazio libero
  4. Seleziona Aggiungi elemento di generazione del codice
  5. Nella finestra di dialogo seleziona “EF 6.x DbContext Generation Code Item” (qualcosa come questo)
  6. Salva il tuo edmx e tutte le classi verranno generate per te, con i nuovi spazi dei nomi e così via

Oltre alle risposte fornite da Rand Random e Dean Oliver, lasciatemi menzionare il seguente link MSDN , che descrive i passaggi generali per l’aggiornamento a EF6. Non sottovalutare i passaggi manuali richiesti …

La road map è (vedi dettagli nel link sopra riportato):

  1. Preparazione: installare gli strumenti Entity Framework 6 per Visual Studio 2012/13

  2. Installa il pacchetto EF6 NuGet

  3. Assicurarsi che i riferimenti all’assembly System.Data.Entity.dll siano rimossi (Nota: l’installazione del pacchetto Nu6 EF6 dovrebbe rimuovere automaticamente qualsiasi riferimento a System.Data.Entity dal progetto per te).

  4. Sostituire tutti i modelli EF Designer (EDMX) per utilizzare la generazione del codice EF 6.x.

    Gli appunti:

    • Se viene visualizzato il messaggio “Entity Data Model Designer non è in grado di visualizzare il file richiesto”, quindi fare clic sul collegamento modificare nel messaggio di testo visualizzato “L’ quadro Data Model Designer … È ansible modificare … “, che mostrerà le tabelle. Seleziona tutto con Ctrl + A , quindi premi Canc , quindi fai clic con il pulsante destro del mouse e seleziona “Aggiorna modello dal database”, infine salva con Ctrl + S. Questo aggiornerà il modello all’ultima versione usando il modello T4 predefinito “EF 6.x DbContext Generator”.
    • Se hai usato ObjectContext nel tuo progetto, dovresti prendere in considerazione il download del modello “EF 6.x EntityObject Generator” . Quindi, fare clic con il tasto destro del mouse sul designer del modello, selezionare “Aggiungi elemento di generazione del codice”, quindi scegliere un nome che non si è ancora utilizzato. *.tt le classi corrette, in seguito dovrai rimuovere tutti i vecchi file (” *.tt “) e i relativi file di class (” *.cs “) generati.
  5. Aggiorna gli spazi dei nomi per qualsiasi tipo di EF di base utilizzato, ad es

    • qualsiasi tipo in System.Data.* viene spostato in System.Data.Entity.Core.*
    • System.Data.EntityState => System.Data.Entity.EntityState
    • System.Data.Objects.DataClasses.EdmFunctionAttribute => System.Data.Entity.DbFunctionAttribute .
      Nota: questa class è stata rinominata; una class con il vecchio nome esiste ancora e funziona, ma ora è contrassegnata come obsoleta.
    • System.Data.Objects.EntityFunctions => System.Data.Entity.DbFunctions .
      Nota: questa class è stata rinominata; una class con il vecchio nome esiste ancora e funziona, ma ora è contrassegnata come obsoleta.
    • Le classi spaziali (ad es. DbGeography , DbGeometry ) sono state spostate da
      System.Data.Spatial => System.Data.Entity.Spatial

NB:

  • Ulteriori informazioni sui modelli EF disponibili sono disponibili su MSDN.

  • Se ricevi un avviso di attributo obsoleto dopo l’aggiornamento a EF6.x, consulta questo articolo SO: Come sbarazzarsi di un avviso di attributo obsoleto?

Oltre ai passi suggeriti da Rand Random. Ricordarsi di installare Entity Framework 6 Tools per Visual Studio 2012 se si utilizza VS2012. scarica qui

Ciò assicurerà che il modello di generatore di EF 6.x DbContext venga mostrato facendo clic su Passaggio 4: Aggiungi elemento di generazione del codice