Na co byste se měli podívat, je buď použít nástroj ORM, který za vás abstrahuje databázi (nHibernate), nebo definovat sadu rozhraní, která reprezentují váš DAL, a poté použít implementaci IoC (Ninject, Castle atd.) k výměně základního implementace dle libosti, pokud implementuje rozhraní.
Navrhnout rozhraní, které je odolné vůči budoucnosti (tj. dokáže si poradit s jemnými zvláštnostmi práce s jinými databázemi), není jednoduché, takže můžete skončit i tak, že budete muset provést změny.
Udělal bych jednu ze dvou věcí v tomto pořadí:
- Zkontrolujte, zda opravdu potřeba vyměnit databáze.
- Vydejte se na cestu nástroje ORM, protože spoustu práce na nohou uděláme za vás.
Dobrým příkladem abstrahování databáze, ne nutně DAL jako takové, je Enterprise Library Data Access Application Block od společnosti Microsoft.