2012-02-27 19 views

risposta

6

, è possibile registrare un implementazione della classe DbProviderFactory aggiungendo il following section nel file di configurazione:

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

L'assemblea MyCustomDataProvider non deve essere registrato nel GAC, ma possono essere distribuiti insieme all'applicazione come private assembly.

È possibile fare riferimento al fornitore di dati registrati a livello di programmazione utilizzando il valore specificato nell'attributo invariant. Per esempio si potrebbe dire ADO.NET per usare il MyNamespace.MyCustomProviderFactory specificando MyCustomProvider come il providerName nella stringa di connessione:

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

Nel codice è possibile utilizzare lo stesso nome del provider con il metodo DbProviderFactories.GetFactory:

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

dove factory sarà un'istanza della classe MyNamespace.MyCustomProviderFactory.

+0

Questo è esattamente quello che sto facendo. Non capisco dove sto andando male? – Mackolicious

+0

Hai provato a specificare il [nome assembly completo] (http://msdn.microsoft.com/en-us/library/k8xx4k69.aspx) nell'attributo 'type'? –

+0

Ho dimenticato di includere la DLL nel mio progetto di avvio. – Mackolicious