Attualmente ci troviamo in una situazione in cui abbiamo una scelta tra l'utilizzo di un mapper relazionale oggettuale pronto all'uso o il rollover
Abbiamo un'applicazione legacy (ASP.NET + SQL Server) in cui il livello dati e amp; sfortunatamente il business-layer viene mischiato insieme. Il sistema non è particolarmente complicato in termini di accesso ai dati. Legge i dati di un grande gruppo (35-40) di tabelle correlate, lo manipola in memoria e amp; lo salva su altre tabelle in un formato di riepilogo. Ora abbiamo l'opportunità per alcuni di refactoring e stiamo esaminando le tecnologie candidate da utilizzare per separare & strutturare correttamente il nostro accesso ai dati.
A prescindere dalla tecnologia che decidiamo, vorremmo:
- hanno oggetti POCO nel nostro modello di dominio che sono Persistenza Ignorante
- avere un livello di astrazione per consentirci di testare l'unità i nostri oggetti del modello di dominio su un'origine dati nascosta sottostimata
Ovviamente ci sono molte cose su questo già in termini di Patterns & Quadri ecc.
Personalmente sto spingendo per usare EF insieme al Repository testabile dell'unità ADO.NET Generatore di entità Generatore / POCO . Soddisfa tutti i nostri requisiti, può essere facilmente raggruppato all'interno di un Pattern Repo / UnitOfWork e la nostra Struttura DB è ragionevolmente matura (avendo già subito un refactoring) in modo tale da non apportare modifiche giornaliere al modello.
Tuttavia altri membri del gruppo stanno suggerendo architecting / rolling our D.A.L. completamente da zero. (Custom DataMappers, DataContexts, Repository, Interfacce ovunque, Overkill Dipendenza iniezione per creare oggetti concreti, Traduzione query personalizzata da LINQ a sottotitoli, Implementazioni personalizzate di memorizzazione nella cache, Implementazioni FetchPlan personalizzate ...) l'elenco continua e per essere sinceri io come pazzia.
Alcuni degli argomenti discussi 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 in passato ho usato entrambi in Production e ho riscontrato che alcuni problemi erano pochi e distanti tra loro e molto gestibili)
Quindi qualcuno dei tuoi sviluppatori / architetti con esperienza ultra-virtuale ha qualche parola di saggezza che potrebbe aiutarmi a guidare questo prodotto lontano da quello che a me sembra che sarà un disastro completo. Non posso fare a meno di pensare che qualsiasi beneficio ottenuto schivando i problemi EF, verrà perso altrettanto rapidamente tentando di reinventare la ruota.