I'll make a Blog post and post some sample code, but basically connecting to another database appears to be straightforward
(you have to have Imports Microsoft.ApplicationBlocks.Data at the top of the page)
Dim ConnectionString As String = "Server=(local);Database=Northwind;uid=myusername;pwd=mypassword;"
Dim mySqlString As StringBuilder = New StringBuilder
mySqlString.Append("SELECT * ")
mySqlString.Append("FROM Customers ")
Dim myreader As IDataReader
myreader = SqlHelper.ExecuteReader(ConnectionString, CommandType.Text, mySqlString.ToString)
GridView1.DataSource = myreader
GridView1.DataBind()
We don't need "DotNetNuke.Data.DataProvider.Instance().ExecuteReader(..." because we don't care about the current "instance" of the provider that DotNetNuke is currently running on. Normally "Instance()" would return the current data provider that DotNetNuke is currently using (for example it could be MS SQL Server, Oracle or MySQL) but in this case we KNOW what database we want to connect to (a database that is NOT the current instance).
The only thing the DAL+ does is provide a way to get to the database with the least amount of code. With the DAL+ you can call the database with one line of code such as:
CType(DataProvider.Instance().ExecuteSQL(mySqlString.ToString()), IDataReader
In the example above I am also using one line:
SqlHelper.ExecuteReader(ConnectionString, CommandType.Text, mySqlString.ToString())
Is this what you are looking for or am I missing a requirement? If not then I don't think we need a change to the Core because the current data provider contains methods for connecting to the current instance and here we are trying to connect to a database that is NOT the current instance so it doesn't seem like the proper place to put the code.
We would be creating an instance of the current provider to connect to another unrelated database. Plus, the code to connect to the alternate database ourselves is only one line :)