Siamo attualmente in una situazione in cui abbiamo una scelta tra utilizzare un mappatore relazionale di oggetti pronto all'uso o implementare il nostro
Abbiamo un'applicazione legacy (ASP.NET + SQL Server) in cui purtroppo il livello dati e il livello aziendale sono uniti. Il sistema non è particolarmente complicato in termini di accesso ai dati. Legge i dati da un grande gruppo (35-40) di tabelle correlate, li manipola in memoria e li salva in alcune altre tabelle in un formato di riepilogo. Ora abbiamo l'opportunità di effettuare il refactoring e stiamo esaminando le tecnologie candidate da utilizzare per separare e strutturare correttamente il nostro accesso ai dati.
Qualunque tecnologia decidiamo, vorremmo:
- hanno oggetti POCO nel nostro modello di dominio che sono ignoranti di persistenza
- avere un livello di astrazione per permetterci di testare gli oggetti del nostro modello di dominio su una sorgente di dati sottostante simulata
Ci sono ovviamente molte cose là fuori già in termini di Patterns & Frameworks ecc.
Personalmente sto spingendo per l'utilizzo di EF insieme al generatore di repository testabile dell'unità ADO.NET / al generatore di entità POCO . Soddisfa tutti i nostri requisiti, può essere facilmente impacchettato all'interno di un modello Repo / UnitOfWork e la nostra struttura DB è ragionevolmente matura (avendo già subito un refactor) in modo tale da non apportare modifiche quotidiane al modello.
Tuttavia, altri nel gruppo stanno suggerendo di progettare / realizzare il nostro DAL completamente da zero. (DataMapper personalizzati, DataContexts, Repository, Interfacce ovunque, Overkill di iniezione di dipendenza per creare oggetti concreti, Traduzione di query LINQ-to-under personalizzate, Implementazioni di cache personalizzate, Implementazioni personalizzate di FetchPlan ...) l'elenco continua ed essere sincero è scioperi io come follia.
Alcuni degli argomenti sollevati sono "Beh, almeno avremo il controllo del nostro codice" o "Oh, ho usato L2S / EF in un progetto precedente e non era altro che mal di testa". (Anche se ho usato entrambi in produzione prima e ho riscontrato che alcuni problemi erano pochi e lontani tra loro e molto gestibili)
Quindi, qualcuna dei tuoi sviluppatori / architetti di grande esperienza là fuori ha qualche parola di saggezza che potrebbe aiutarmi a guidare questo prodotto lontano da quello che mi sembra che sarà un disastro completo. Non posso fare a meno di pensare che qualsiasi vantaggio ottenuto schivando i problemi EF, andrà perso altrettanto rapidamente tentando di reinventare la ruota.