Вы должны взглянуть на пространство имен System.Data.Common. Это пространство имен использует структуры, такие как DbConnection, DbReader и т. Д., И само использует фабричный метод для создания необходимого DbProvider.
Таким образом, вместо того, чтобы идти по вашему текущему пути, я бы предложил, чтобы текущая структура данных .net сделала подъем за вас.
вот быстрый пример.
DbProviderFactory m_factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
DbConnection m_connection = m_factory.CreateConnection();
m_connection.ConnectionString = _connstrbldr.ConnectionString;
m_connection.Open();
using (DbCommand cmd = m_connection.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "";
cmd.ExecuteNonQuery();
}
Вызов GetFactory может принять любого провайдера, установленного на компьютере, Oracle, MySql, Sql и т. Д.
Вы также можете получить всех провайдеров, установленных на компьютере, вызвав статический DataTable GetFactoryClasses (), который возвращает объект с данными.
Идея, лежащая в основе этого, заключается в том, чтобы избегать реализации, специфичной для поставщика, и полагаться на общую реализацию, которая бы отвечала всем вашим потребностям.
Написание независимого от поставщика кода в ADO.NET
Я надеюсь, что вы найдете это полезным.