Это потому, что все фабрики унаследованы от 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