Не понимаю, почему DbProviderFactories.GetFactory возвращает NULL
В моем приложении C# у меня есть примерно следующий код:
В App.Config:
<connectionStrings>
<add name="Con1" connectionString="..." providerName="System.Data.Odbc"/>
</connectionStrings>
В моем коде:
static DbConnection createConnection(ConnectionStringSettings conn_str)
{
DbProviderFactory factory = DbProviderFactories.GetFactory(conn_str.ProviderName);
var retval = factory.CreateConnection();
retval.ConnectionString = conn_str.ConnectionString;
return retval;
}
Это создает для меня переменную соединения, conn
и прекрасно работает (я могу открыть соединение, запросить его и т. д.), поэтому я знаю, что ссылаюсь на правильные библиотеки.
Однако позже мне нужно снова получить фабрику и использовать:
DbProviderFactory factory = DbProviderFactories.GetFactory(conn);
Но, по какой-то причине, я понимаю, что factory = null
,
Я делаю что-то явно неправильно?
2 ответа
Я только что попробовал следующий код:
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.Odbc");
var retval = factory.CreateConnection();
Фабрика вернулась как не нулевая. Что-то еще происходит, так как этот код должен работать нормально.
Я не знаю, помогает ли это, но я столкнулся с той же проблемой. Я попытался использовать OleDbConnection, чтобы получить завод без удачи. Я использовал ту же базу данных, но через SqlConnection, и она работала нормально. Возможно, это связано с типом соединения, но документация не дает представления об этом. Если DbProviderFactories.GetFactory не работает с некоторыми видами DbConnection, он должен по крайней мере выдать исключение. Попробуйте перейти на другой тип подключения. Приветствую и удачи.