Не понимаю, почему 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, он должен по крайней мере выдать исключение. Попробуйте перейти на другой тип подключения. Приветствую и удачи.

Другие вопросы по тегам