Quello che dovresti cercare di fare è utilizzare uno strumento ORM che astrae il database per te (nHibernate) o definire un set di interfacce che rappresentano il tuo DAL e quindi utilizzare un'implementazione IoC (Ninject, Castle, ecc.) Per scambiare il sottostante implementazione a piacimento, purché implementi l'interfaccia.
Tuttavia, la progettazione di un'interfaccia a prova di futuro (ad esempio, in grado di far fronte a sottili stranezze di lavoro con altri database) non è semplice, quindi potresti finire per dover apportare modifiche comunque.
Farei una delle due cose, in questo ordine:
- Esamina se veramente necessario sostituire i database.
- Segui il percorso dello strumento ORM poiché molto lavoro per le gambe è stato fatto per te.
Un buon esempio di astrazione di un database, non necessariamente DAL di per sé, è l'Enterprise Library Data Access Application Block di Microsoft.