Recentemente ho scoperto l'idea dell'ignoranza della persistenza, l'idea che il tuo modello di dominio dovrebbe ignorare il livello di persistenza dell'applicazione, e questo mi ha fatto riflettere.
Ho fatto del mio meglio per mantenere le diverse parti dell'applicazione liberamente accoppiate, avvolgendo cose come l'ORM nelle interfacce in modo che potessi (relativamente) facilmente scambiarle se necessario. Tuttavia, ho trovato gli aspetti dell'ORM e, ancor più, il database sottostante che sfugge al mio modello di dominio, costringendomi a ristrutturare il mio modello di dati per adattarlo ai limiti del database.
Quindi stavo pensando di aggiungere un modello di dati di persistenza che sarebbe specifico per gestire l'ORM e che verrebbe indirizzato direttamente alle tabelle e alle relazioni del database. Quindi, durante la lettura dei dati, eseguire la mappatura da quel modello di dati al modello di dominio e, quando si scrivono dati, eseguire la mappatura dal modello di dominio al modello di dati di persistenza. (Attualmente lavoro in .NET, quindi posso utilizzare il meraviglioso AutoMapper per la conversione da un tipo all'altro).
È qualcosa come questa pratica comune? Vale la pena di un ulteriore sovraccarico di manutenzione durante le modifiche al modello di dominio? Potrebbe essere considerato un anti-pattern?