Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top