Okay I agree that if you use only ExecuteSQL in the dal+ and you use "standard" SQL you have a hope of database independence on those calls.
Is it possible to create a single script to create the tables and indexes for a module that you can guarantee with work in SQL server, Oracle, Access and MySQL? I do not know if table creation is part of the entity spaces stuff. It wasn't obvious form the information I have read. I will need to spend more time on that. I would guess that it is not a slam dunk to easily define tables in oracle, MySQL, Access and SQL server without compromises. There are differences between the databases here is an article talking about datatype interoperability. There are issues.
Even if it is possible with entity spaces or the table definition and index creation is common among all the databases and it is simple. You have to test on all of them. That would quadruple the database access testing on a module. I would guess that testing is rarely sufficient now. It will certainly get worse. Developers won't have SQL Server, Oracle, MySQL and Access all running to test. It just seems impractical. True swappable database providers is a figment of our imagination as it is right now unless every part is taken care of in the dataprovider and that will be too limiting.
It's like writing a program in C. You should be able to write source and compile that same code on Linux, UNIX and windows and have the program work on all systems. But it only works for very simple things.
mj