Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

Entity Framework POCO Generator

Una delle problematiche che affligge Entity Framework e di cui ci sono anche parecchi post in merito, è la totale dipendenza delle entities dalla logica di persistenza.

Insomma, se voglio come è normale utilizzare il mio model in altri strati della mia architettura multilivello, creo implicitamente una dipendenza con lo strato di accesso ai dati.

E questo, indipendentemente che voglia realizzare o meno una soluzione il più astratta e loosely coupled possibile, è male.
In particolare se pensiamo a tutta una serie di scenari SOA dove utilizzo dei servizi web che devono dialogare tramite queste entities.

La soluzione esiste, e sono i DTO. Attraverso i DTO rimappo le entity non POCO(Plain Old CLR Objects) di EF su un insieme di classi POCO.

Per semplificare questa operazione e renderla automatica, suggerisco l’uso dell’ Entity Framework POCO Generator.
Questo tool fa parte di un progetto che fornisce anche un adapter per supportare l’utilizzo delle entities POCO con l’ Entity Framework.

Una volta scaricato il progetto, di cui si hanno i sorgenti, si ricompila il tool di generazione ed è poi possibile automatizzare la creazione del nostro nuovo model inserendo sul progetto in Visual Studio una pre-build condition in modo simile a questo:

"$(SolutionDir)EFPocoClassGen\EFPocoClassGen.exe" /mode:PocoClasses /inedmx:"$(SolutionDir)MyProject.Data.Repository\Model\Entities.edmx" /outputdir:"$(ProjectDir)Model/autogenerated" /map:MyProjectModel=$(ProjectName).Model

del.icio.us Tags: ,,


Feedback

# re: Entity Framework POCO Generator

Gravatar Condivido quello che dici, il DTO potrebbe essere progettato ad-hoc, ovviamente dipende anche dal tipo di progetto.
Una soluzione intermedia potrebbe essere, come ho fatto io, quello di generare le classi automatiche come "partial" in modo cosi da poter rimodellare i nostri DTO come vogliamo, ma pur sempre avendone autogenerata la struttura base. 17/04/2009 17:06 | Luca

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri