È possibile utilizzare un fornitore di dati .NET personalizzato senza installarlo nel GAC?Provider di dati .NET personalizzati
Posso fare riferimento a una DLL personalizzata e registrarla nel mio file di configurazione?
È possibile utilizzare un fornitore di dati .NET personalizzato senza installarlo nel GAC?Provider di dati .NET personalizzati
Posso fare riferimento a una DLL personalizzata e registrarla nel mio file di configurazione?
Sì, è 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
.
Questo è esattamente quello che sto facendo. Non capisco dove sto andando male? – Mackolicious
Hai provato a specificare il [nome assembly completo] (http://msdn.microsoft.com/en-us/library/k8xx4k69.aspx) nell'attributo 'type'? –
Ho dimenticato di includere la DLL nel mio progetto di avvio. – Mackolicious