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