Пользовательские провайдеры данных .NET - PullRequest
8 голосов
/ 27 февраля 2012

Можно ли использовать пользовательский поставщик данных .NET, не устанавливая его в GAC?

Могу ли я сослаться на пользовательскую DLL и зарегистрировать ее в моем файле конфигурации?

1 Ответ

6 голосов
/ 27 февраля 2012

Да , вы можете зарегистрировать реализацию класса 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.

...