Sie sollten entweder ein ORM-Tool verwenden, das die Datenbank für Sie abstrahiert (nHibernate), oder eine Reihe von Schnittstellen definieren, die Ihre DAL darstellen, und dann eine IoC-Implementierung (Ninject, Castle usw.) verwenden, um das zugrunde liegende auszutauschen Implementierung nach Belieben, solange sie die Schnittstelle implementiert.
Es ist jedoch nicht einfach, eine zukunftssichere Schnittstelle zu entwerfen (die mit den subtilen Macken der Arbeit mit anderen Datenbanken fertig wird), sodass Sie am Ende möglicherweise trotzdem Änderungen vornehmen müssen.
Ich würde eines von zwei Dingen in dieser Reihenfolge tun:
- Überprüfen Sie, ob Sie wirklich Datenbanken austauschen müssen.
- Gehen Sie die ORM-Tool-Route hinunter, da viel Beinarbeit für Sie erledigt wird.
Ein gutes Beispiel für die Abstraktion einer Datenbank, nicht unbedingt der DAL per se, ist der Enterprise Library Data Access Application Block von Microsoft.