Это потому, что все фабрики унаследованы от DbProviderFactory. Если вы используете только члены DbProviderFactory, то сможете написать код, работающий с любой фабрикой.

Недостаток показанного выше фрагмента кода состоит в том, что приходится передавать строку, идентифицирующую провайдера, методу DbProviderFactories.GetFactory(). Обычно вы будете читать эту строку из настроек приложения в файле web.config. Таким образом, можно писать полностью независимый от базы данных код и легко переключать ваше приложение на использование другого провайдера простой модификацией единственной настройки.

Совет. На практике вам понадобится сохранить несколько специфичных для провайдера подробностей в конфигурационном файле. Нужно будет не только извлекать оттуда имя провайдера, но также и строку соединения. Может понадобиться также получать оттуда же имена хранимых процедур, чтобы избежать их жесткого кодирования, потому что они могут изменяться. Вы можете самостоятельно найти компромисс между сложностью разработки и гибкостью.

Чтобы работал класс DbProviderFactories, ваш провайдер должен зарегистрировать фабрику в конфигурационном файле machine.config или web.config. Файл machine.config регистрирует четырех провайдеров, включенных в инсталляцию .NET Framework:

<configuration>
  <system.data>
    <DbProviderFactories>
      <add name="Odbc Data provider" invariant="System.Data.Odbc"
        type="System.Data.Odbc.OdbcFactory, ..." />
      <add name=O1eDb Data Provider" invariant="System.Data.OleDb"
        type="System.Data.OleDb.OleDbFactory, ..." />
      <add name="OracleClient Data Provider" invariant="System.Data.OracleClient"
        type="System.Data.OracleClient.OracleClientFactory, ..." />
      <add name="SqlClient Data Provider" invariant="System.Data.SqlClient"
        type="System.Data.SqlClient.SqlClientFactory, ..." />
    </DbProviderFactories>
  </system.data>
</configuration>

Этот шаг регистрации идентифицирует класс фабрики и присваивает уникальное имя провайдеру (которое, по соглашению, совпадает с наименованием пространства имен провайдера). Если у вас есть провайдер данных от независимых разработчиков, который вы хотите использовать, то должны будете зарегистрировать его в разделе <DbProviderFactories> файла, machine.config (чтобы сделать его доступным на конкретном компьютере), либо в web.config (чтобы обеспечить доступ к нему из конкретного Web-приложения). Весьма вероятно, что лицо или компания, разработавшая провайдера, предоставит программу настройки для автоматизации этой задачи или явно описанный синтаксис конфигурации.

предыдущая    следующая страница   оглавление

333

Hosted by uCoz