Да , вы можете зарегистрировать реализацию класса DbProviderFactory , добавив следующий раздел в файл конфигурации:
<system.data>
<DbProviderFactories>
<add name="My Custom Data Provider"
invariant="MyCustomDataProvider"
description="Data Provider for My Custom Store"
type="MyNamespace.MyCustomProviderFactory, MyCustomDataProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=" />
</DbProviderFactories>
</system.data>
Сборка MyCustomDataProvider
не должна быть зарегистрирована в GAC, но может быть развернута вместе с приложением как частная сборка .
. Вы можете обращаться к зарегистрированному поставщику данных программноиспользуя значение, указанное в атрибуте invariant
.Например, вы можете указать ADO.NET использовать MyNamespace.MyCustomProviderFactory
, указав MyCustomProvider
в качестве providerName
в строке подключения:
<connectionStrings>
<add name="ConnString"
providerName="MyCustomProvider"
connectionString="MyCustomConnectionString" />
</connectionStrings>
В коде вы можете использовать то же имя поставщика с DbProviderFactories.GetFactory метод:
DbProviderFactory factory = DbProviderFactories.GetFactory("MyCustomDataProvider");
, где factory
будет экземпляром класса MyNamespace.MyCustomProviderFactory
.