Credo che se i tuoi repository utilizzano un ORM è già abbastanza astratto dal database.
Tuttavia, dove sto lavorando ora, qualcuno crede che dovremmo avere un livello che astragga l'ORM nel caso in cui vorremmo cambiare l'ORM in seguito.
È davvero necessario o è semplicemente un po 'troppo impegnativo creare un livello che funzioni su molti ORM?
Modifica
Solo per dare maggiori dettagli:
- Abbiamo classe POCO ed Entity Class mappate con AutoMapper. Le classi di entità vengono utilizzate dal livello del repository. Il livello del repository quindi usa lo strato aggiuntivo di astrazione per comunicare con Entity Framework.
- Il livello aziendale non ha in alcun modo un accesso diretto a Entity Framework. Anche senza il livello aggiuntivo di astrazione sull'ORM, questo deve utilizzare il livello di servizio che utilizza il livello del repository. In entrambi i casi, il livello aziendale è completamente separato dall'ORM.
- L'argomento principale è di essere in grado di modificare ORM in futuro. Dal momento che è veramente localizzato all'interno del livello del repository, per me è già ben separato e non vedo perché sia necessario un ulteriore livello di astrazione per avere un codice di "qualità".