Bob,
I think you are right ON base. There is lot done to separate and abstract the data access. That works great. It does add complexity, but with templates and code generators it really isn't all that hard.
I don't see how Michael Washington's description of the DAL and DAL+ explain how it is possible to have modules that don't have separate code for each dataprovider. Granted that code will not have to be sprinkled throughout the BLL code. But at some point it eventually calls a stored procedure. The two big problems are:
1. What happens with databases that don't support stored procedures?
2. You have to write those stored procedures for each provider for your specific module?
so if I want to use an oracle provider then every module I use has to come with an install, that will create the tables and stored procedures necessary to add update, get... the data for that module.
To really make it dataprovider swappable then the install would have to take some sort of generic stored procedure definitions and then the provider would translate those into the form required for it's mother database. Then the modules don't need to know anything about the database. All they need to know is what the dataprovider needs to get its job (of talking to the database) done.
Then ya really got somethin.
I'm with you Bob.
mj