Usiamo un livello DAL che non solo fa la roba SQL ma gestisce l'astrazione. La responsabilità del livello DAL consiste nel prendere un oggetto generico chiamato oggetto di trasferimento dati. L'oggetto di trasferimento dati contiene un elenco di DAL POCO. Il DAL esamina ogni POCO (decoriamo la classe con gli attributi) e genera dinamicamente una classe mapper basata sul tipo di oggetto. Da lì, si tratta solo di mappare le proprietà POCO ai parametri delle stored procedure. Il DAL è molto semplice, basta salvare, eliminare e interrogare sull'interfaccia insieme a un comando personalizzato quando si vuole fare qualcos'altro (chiamare una stored procedure diversa da quella di base per l'inserimento, l'aggiornamento, l'eliminazione, la ricerca) per una certa estensibilità.
Il DAL non si preoccupa veramente del Dominio, è legato allo schema. Pertanto, i POCO utilizzati dal DAL potrebbero essere associati a POCO di domini diversi nel livello del dominio. Quindi in alcuni casi potrebbe esserci un livello intermedio, ma è possibile utilizzare i POCO utilizzati dal DAL in quanto sono solo oggetti di stato e non contengono alcun metodo o logica, ma a volte il dominio e il DAL non corrispondono realmente questo è il momento in cui il dominio sarebbe responsabile della conversione dell'oggetto dominio in un oggetto DAL / POCO.
Da un punto di vista DAL, al momento stiamo supportando 50 delle tabelle ~ 200 pianificate con questo modello, immagino che questo sia un lite ORM nazionale. Con alcuni generatori di codice che abbiamo implementato, la maggior parte e il codice di mappatura (codice noioso della colla) vengono gestiti automaticamente, così possiamo concentrarci sulla logica di business e di presentazione.
Ma è così che l'abbiamo fatto con il 100% di Sproc.