2014-12-10 12 views
11

Sono in procinto di convertire un modello EDMX esteso in classi POCO. Ho bisogno di passare da un approccio Database First (EDMX con ObjectContext) a un approccio Model First puro (DbContext senza file EDMX). Ho bisogno di usare l'ultima versione stabile di Entity Framework: 6.1.1.Come generare classi POCO di Entity Framework 6.x con mapping da un file EDMX?

Ho testato alcuni approcci:

  • Aggiunta di una voce di generazione di codice EF 6.x DbContext Generator facendo clic destro lo spazio vuoto nella EDMX designer. Funziona bene, ma non aggiunge alcuna mappatura. Con questo approccio devo ancora usare il file EDMX. Primo codice non completo.
  • Utilizzo dello EF 5.x DbContext Fluent Generator for C#. Questo fa scattare un'eccezione in fase di progettazione. Non sono in grado di usarlo. Non so se è perché i miei strumenti VS Entity Framework sono già stati aggiornati a 6.x. Usare l'alternativa TT nei commenti, che suggerisce che funzionerebbe con EF 6.0, non aiuta.
  • Utilizzo dello EntityFramework Reverse POCO Generator. Questo è il peggiore perché non prenderà in considerazione nessuna delle mie classi e la rinomina delle proprietà di navigazione.
  • Utilizzo di Entity Framework Power Tools Beta 4. Di nuovo, supporta solo la generazione dal database, non dal file EDMX.

mie esigenze:

  • ho bisogno l'ingresso di essere il file EDMX, non il database.
  • Ho bisogno che l'output sia un codice completo Primo approccio con mappature Fluent.
  • Ho bisogno di prendere in considerazione tutti i miei nomi di proprietà di navigazione definiti nell'EDMX perché altrimenti si spezzerebbe una base di codice di grandi dimensioni, tanto più la migrazione da ObjectContext a DbContext si interromperà.

Quale pensi che sarebbe una buona opzione per me andare?

+2

Entity Framework potere strumenti di estensione in Visual Studio, https://visualstudiogallery.msdn.microsoft.it/72a60b14-1581-4b9b-89f2-846072eff19d – dotctor

+0

Grazie a @dotctor, ma Entity Framework Power Tools non supporta la generazione di POCO e mapping da un file EDMX, solo dal server di database. –

+0

è possibile generare un database fittizio da edmx e quindi decodificarlo per generare i propri pocos – dotctor

risposta

1

Beh, non penso che ci sia una soluzione con un solo clic.

Sotto i file edmx. Sono disponibili altri due file oltre allo xx.Designer.cs e xx.edmx.diagram .. chiamato xx.Context.tt e xx.tt dove xx è il nome del modello edmx.

Questi sono i modelli T4 che generano i tuoi oggetti dbcontext e poco. Tutti i tuoi oggetti poco sarebbero creati sotto i tuoi file xx.tt e dbcontext sotto i tuoi file xx.Context.tt.

Ora è necessario spostarli in file separati. Questo è molto più semplice se si utilizza EF6. e il file generato utilizza già DbContext e non ObjectContext.

+0

Grazie, ma poi avrei ancora bisogno dell'EDMX e non avrei le mappature fluide. Ho bisogno di sbarazzarmi di EDMX e fare i mapping tutti fatti dal codice. –

+0

Bene, se copi i file .cs generati da sotto i modelli tt .. non hai più bisogno del tuo edmx .. e la mappatura fluente sono già presenti nei file contestuali generati .. – amuz

+0

Lo proverò ora –

0

Ho affrontato un caso simile e ho utilizzato Entities per il generatore di DTO. Sebbene il suo scopo sia quello di generare DTO, credo che possa aiutare qualcuno nel tuo caso.

https://entitiestodtos.codeplex.com/

Problemi correlati