Ce que vous devriez envisager de faire est soit d'utiliser un outil ORM qui résume la base de données pour vous (nHibernate), soit de définir un ensemble d'interfaces qui représentent votre DAL, puis d'utiliser une implémentation IoC (Ninject, Castle, etc.) pour échanger le sous-jacent implémentation à volonté, tant qu'il implémente l'interface.
Cependant, la conception d'une interface évolutive (c'est-à-dire capable de gérer les subtilités du travail avec d'autres bases de données) n'est pas simple, vous pourriez donc devoir apporter des modifications de toute façon.
Je ferais l'une des deux choses suivantes, dans cet ordre :
- Examinez si vous vraiment besoin d'échanger des bases de données.
- Suivez la route de l'outil ORM, car beaucoup de travail est fait pour vous.
Un bon exemple d'abstraction d'une base de données, pas nécessairement la DAL en soi, est le bloc d'application d'accès aux données de la bibliothèque d'entreprise de Microsoft.