6

Ho un progetto ASP.net (C#) che utilizza un'architettura a tre livelli. Ho iniziato a utilizzare Entity Framework nel mio DAL e la domanda è fino a che punto le classi generate da Entity Framework possono essere utilizzate nel livello di business logic?Utilizzo di classi generate da Entity Framework in Business Logic Layer

E 'una buona idea di utilizzare direttamente o devo creare il mio oggetti di business e la mappa a loro da Entity Framework (DB-> O/RM-> BOS)?

risposta

5

A mio parere, gli oggetti EF verranno mappati sul tuo. Questo ha un costo di sviluppo più elevato, ma offre l'ulteriore vantaggio dell'ignoranza e del disaccoppiamento della persistenza. Questo disaccoppiamento può tradursi in una significativa agilità e risparmi reali nel lungo periodo, nel caso in cui l'azienda debba passare a una soluzione di persistenza diversa. Senza il disaccoppiamento, gli oggetti EF possono diventare profondamente integrati nel BLL e persino nei livelli di presentazione, richiedendo un enorme refactoring. In tal caso, l'azienda potrebbe anche non prendere in considerazione la possibilità di cambiare le soluzioni di persistenza, il che potrebbe rendere l'attività meno competitiva.

La decisione di cogliere questo vantaggio al costo di sviluppo più elevato dipende dalla quantità di rischio che l'azienda è disposta a prendere. Ti suggerisco di consultare i commissari del progetto e usare il tuo miglior giudizio per interpretare i loro obiettivi strategici in modo tecnico.

+2

EF generati classi sono state progettate per essere estensibile ed essere utilizzati come oggetti di business . Se non ti piace, dovresti cambiarlo o aspettare solo il codice EF 4. Aggiungere oggetti aggiuntivi non sembra giusto. Primo DB, quindi classi ORM, quindi BO, quindi visualizzare i modelli. Sembra molto. – LukLed

2

Dovrebbe essere abbastanza ragionevole utilizzare le classi generate come oggetti business. Le classi generate sono parziali, quindi puoi estenderle facilmente a tuo piacimento. A volte trovo comunque un'opzione migliore per usare le interfacce.

1

ho appena iniziato il EF 2.0 (in .Net 4.0 beta 2) e ha la possibilità di utilizzare clases POCO come entità EF. cioè È ora possibile utilizzare persistenza classi ignoranti in EF 2.
credo che questo non è ancora completamente pronto, come non ho potuto seguire la presentazione da PDC 2009 quando si lavora in Visual Studio 2010 Beta 2, ma tenere sotto controllo per questo a ADO.Net team blog.