Пользовательские провайдеры данных.NET
Можно ли использовать пользовательский поставщик данных.NET, не устанавливая его в GAC?
Могу ли я сослаться на пользовательскую DLL и зарегистрировать ее в моем файле конфигурации?
1 ответ
Да, вы можете зарегистрировать реализацию класса 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
учебный класс.