To, na co powinieneś zwrócić uwagę, to albo użyć narzędzia ORM, które abstrahuje bazę danych dla ciebie (nHibernate), albo zdefiniować zestaw interfejsów reprezentujących twój DAL, a następnie użyć implementacji IoC (Ninject, Castle, itp.) do zamiany bazowego implementacja do woli, o ile implementuje interfejs.
Jednak zaprojektowanie interfejsu, który jest przyszłościowy (tzn. poradzi sobie z subtelnymi dziwactwami pracy z innymi bazami danych) nie jest proste, więc i tak może się okazać, że będziesz musiał wprowadzić zmiany.
Zrobiłbym jedną z dwóch rzeczy w tej kolejności:
- Sprawdź, czy naprawdę trzeba wymienić bazy danych.
- Zejdź ścieżką narzędzia ORM, ponieważ dużo pracy wykonywanej jest za Ciebie.
Dobrym przykładem abstrahowania bazy danych, niekoniecznie samego DAL, jest blok aplikacji dostępu do danych biblioteki korporacyjnej firmy Microsoft.