Поставщик данных Oracle (ODP.NET) не указан в DbProviderFactories. - PullRequest
1 голос
/ 12 июля 2009

Я хочу использовать класс DbProvider для создания универсального компонента DAL. Это будет удобно при переключении между различными поставщиками баз данных. На компьютере с установленной Oracle 2.2 поставщик ODP.NET поставщика Oracle не отображается в списке при попытке отобразить список всех поставщиков базы данных, доступных на компьютере.

   DataTable dtable = DbProviderFactories.GetFactoryClasses();

Хотя ссылка на Oracle.DataAccess.dll и подключение к Oracle с использованием класса OracleConnection не является проблемой.

OracleConnection con = new OracleConnection();

Что я здесь не так делаю?

EDIT: Согласно этой странице в списке должен появиться «Поставщик данных Oracle для .Net».

Ответы [ 2 ]

2 голосов
/ 12 июля 2009

Вот как работает DbProviderFactories.GetFactoryClasses ...

По умолчанию (если у вас нет app.config), он будет искать в вашем machine.config раздел с именем system.data/DBProviderFactories. В основном, все «зарегистрированные» db-провайдеры, которые будут доступны, можно найти в этом разделе.

Поэтому добавьте это в раздел app.config system.data/DBProviderFactories или в файл machine.config.

что-то вроде:

<configuration>
  <system.data>
    <DbProviderFactories>
      <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
</configuration>

И убедитесь, что ваша версия ODP.NET поддерживает DbProviderFactories. Я думаю, вам нужен Oracle Database 10g Release 2 для этого.

0 голосов
/ 12 июля 2009

Выполняя ваш код, я вижу следующую строку в моей таблице данных:

OracleClient Data Provider .Net Framework Data Provider for Oracle
System.Data.OracleClient System.Data.OracleClient.OracleClientFactory,
System.Data.OracleClient, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089

System.Data.OracleClient должен быть в вашем GAC начиная с .NET Framework 2.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...