Option 1: Design your own DAL
- Repository pattern (abstract what database technology being used from the application).
- Plugin pattern (dynamically load DAL assembly from config file using IoC container for database independence).
Option 2: O/RM Mapping Tools
- NHibernate
- Entity Framework
- These tend to combine with the Business Layer domain model (preferably with POCO's) that you script directly from the service layer.
"The need for a domain-driven design arose and, subsequently, the need for working with data at a more conceptual level. Inevitably, the role of the database has been downgraded to that of a mere persistence layer. The data access layer that we created for years as a wrapper around stored procedures is now obsolete and out of place. The data access layer has evolved toward becoming an O/R mapping layer"
Option 3: ODBMS (NoSQL)
- Mongodb with NoRM
- Much better performance than O/RM mapping tools and removes O/R impedance mismatch.