Credo che se hai i tuoi repository usi un ORM che è già abbastanza estratto 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 sacco di costi generali per creare un livello che funzionerà su molti ORM?
modificare
Giusto per dare maggiori dettagli:
- Abbiamo classe POCO ed Entity Class mappate con AutoMapper. Le classi di entità vengono utilizzate dal livello Repository. Il livello del repository utilizza quindi il livello 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 repository. In entrambi i casi, il livello aziendale è totalmente separato dall'ORM.
- L'argomento principale è di poter cambiare ORM in futuro. Dal momento che è veramente localizzato all'interno del livello Repository, per me è già ben separato e non vedo perché è necessario un ulteriore livello di astrazione per avere un codice di "qualità".