2012-02-27 21 views

Odpowiedz

6

Tak, można zarejestrować implementację klasy DbProviderFactory dodając following section w pliku konfiguracyjnym:

<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> 

Zespół MyCustomDataProvider nie musi być zarejestrowany w GAC ale mogą być wdrażane razem z aplikacją jako private assembly.

Można programowo zarejestrować się w zarejestrowanym dostawcy danych, używając wartości określonej w atrybucie invariant. Na przykład można powiedzieć ADO.NET używać MyNamespace.MyCustomProviderFactory określając MyCustomProvider jako providerName w ciągu połączenia:

<connectionStrings> 
    <add name="ConnString" 
     providerName="MyCustomProvider" 
     connectionString="MyCustomConnectionString" /> 
</connectionStrings> 

W kodzie można wykorzystać taką samą nazwę dostawcy metodą DbProviderFactories.GetFactory:

DbProviderFactory factory = DbProviderFactories.GetFactory("MyCustomDataProvider"); 

gdzie factory będzie instancją klasy MyNamespace.MyCustomProviderFactory.

+0

Dokładnie to robię. Nie rozumiem, gdzie idę źle? – Mackolicious

+0

Czy próbowałeś podać [w pełni kwalifikowaną nazwę zespołu] (http://msdn.microsoft.com/en-us/library/k8xx4k69.aspx) w atrybucie 'type'? –

+0

Zapomniałem uwzględnić bibliotekę DLL w moim projekcie początkowym. – Mackolicious