I know I said I would stop beating this issue to death but I think I have fleshed it out a bit.
Instead of just complaining I think some of us could "contribute" to the project in regards to the DAL.
The approach I hope is considered is that a second database connection key be included in the web.config file like we had in 2.0.
Current modules that use the current DAL would continue to work, however new modules could have the opportunity to support the new connection.
This new connection would use the new DAAB. The new DAAB would allow Dotnetnuke to support SQl, Oracle, and DB2.
The problems with this idea (and the reason the core may reject it):
* The sql install scripts. How would the stored procedures be created?
A) The module install would only run the install script for the currently configured data source (if the module indicated that it was using the new data provider structure).
B) If an administrator changed the data source then Dotnetnuke would try to run the install scripts for all the currently configured modules that have an install script for that particular data source otherwise the module would be disabled (this would require a new field in the module configuration table to track the data source that the module was configured for and whether it was configured for the "legacy" (current) data provider or the new one. The install scripts would have the ".resource" extension to prevent them from being accessed directly).
* The new DAAB is rather large and does a lot more than database access. The other code in the .dll would be totally wasted.
I do understand why the core would say "listen guys you are trying to fix something that already works". However, I think that when the module developers, including the core, are only making sql providers then they are all saying that the extra coding needed to support the DAL is going to waste because the extra coding only make sense if you actually code more than one provider.
Telling us to "roll our own" provider is not the best way to keep the community on the same page. The module developers want to "stay in the fold" and do it the "official way". I am currently coding the DAL the official way. I keep wanting to "roll my own" but I always break down and code it according to Shaun's document (ok I really just use DAL builder pro :)
I understand that this may be a great idea but falls under the "who has time for this?". If the core is not working on this (so I know I would not be wasting my time) I would be willing to head up a group of volunteers to create a "proof of concept" to present to the core. I really feel there is support out there and that a lot of the module developers would code to the new method if it were implemented.
1. You would still use the "controller" and the CBO to hydrate your "info" object but you would simply call your stored procedure (or sql statement) directly from the "controller". This would eliminate a lot of code. Using the "src=" directive in your .ascx file, you could code a module using notepad that talks to the database. I think people would actually start giving away more free modules when they are able to create them quickly and easily.
2. When the administrator changes the data source:
* All modules that have an install script for the new provider would continue to work.
* The legacy modules that support that provider would also continue to work.
(However what I think will happen is everyone would continue to only make SQL providers and that the only people who would change providers would be the people who are writing their own modules. However even they would appreciate the fact that they simply need to create a install script rather then code and compile a "provider").
In the end what I am REALLY trying to get at is I want to allow a person who WANTS to make dotnetnuke module the ability to make one. Right now a person has to have the ABILITY to make modules and the fact that you have to have Visual Studio and know how to use it to code the DAL means it is not easy.
My "Creating a DotNetNuke Module using notepad" gets a lot of hits. The problem is without the ability to connect to the database it's usefulness is limited.
The easier it is to make modules the more modules we will have. The more modules we have the "stronger" we become. We could have thousands of modules when we make it easy for the average person to make a module to get to their data. Right now too many potentially good programmers get frustrated and quit. Yes I agree they should "roll their own" provider but instead they quit. How many "roll your own" provider modules are there on snowcovered? Even I wouldn't want to buy a module that had a "roll your own" provider. If the core doesn't bless it then I really don't want a part of it.
I am asking the core if it would be worth my time to gather a group to pursue a proof of concept.