Пользовательские провайдеры данных.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 учебный класс.

Другие вопросы по тегам