Waar u naar moet kijken, is ofwel een ORM-tool gebruiken die de database voor u abstraheert (nHibernate), of een set interfaces definiëren die uw DAL vertegenwoordigen en vervolgens een IoC-implementatie gebruiken (Ninject, Castle, enz.) implementatie naar believen, zolang het de interface implementeert.
Het ontwerpen van een interface die toekomstbestendig is (dwz die de subtiele eigenaardigheden van het werken met andere databases aankan) is echter niet eenvoudig, dus het kan zijn dat u toch wijzigingen moet aanbrengen.
Ik zou een van de twee dingen doen, in deze volgorde:
- Controleer of je echt databases moeten verwisselen.
- Ga de ORM-toolroute af, want er wordt veel beenwerk voor je gedaan.
Een goed voorbeeld van het abstraheren van een database, niet per se de DAL op zich, is het Enterprise Library Data Access Application Block van Microsoft.