Kann nicht SQL Server CE-Provider Fabrik durch unveränderliche Namen auflösen
-
05-07-2019 - |
Frage
Diese Codezeile
DbProviderFactory factory = DbProviderFactories.GetFactory("Microsoft.SqlServerCe.Client");
wirft diese Ausnahme
System.Configuration.ConfigurationErrorsException: Kann das registriert finden oder laden .NET Framework-Datenanbieter.
Obwohl meine machine.config-Datei enthält den folgenden Abschnitt
<system.data>
<DbProviderFactories>
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="SQL Server CE Data Provider" invariant="Microsoft.SqlServerCe.Client" description=".NET Framework Data Provider for Microsoft SQL Server 2005 Compact Edition" type="Microsoft.SqlServerCe.Client.SqlCeClientFactory, Microsoft.SqlServerCe.Client, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>
Bin ich etwas fehlt? Sollte ich irgendwo anders aussehen? Code wie DbProviderFactory factory = SqlCeProviderFactory.Instance
funktioniert.
Lösung
Es gibt mehr SQL Server CE installiert. Die Visual Studio Tools stellt den Server-Explorer und Design-Komponenten und den SQL Server CE-DLLs in einem Ort lokal für Visual Studio stellt. Ich brauchte die Laufzeit installieren den Datenanbieter in der Datei machine.config registriert zu erhalten.
Andere Tipps
In Visual Studio 2012, die Standard- Provider System.Data.SqlServerCe.4.0
ist.
Auf diese Weise kann me eine Fabrik mit Namen finden:
String providerName = "System.Data.SqlServerCe.4.0";
DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
if (factory == null)
throw new Exception("Unable to locate factory for " + providerName);
DbConnection conn = factory.CreateConnection();
conn.ConnectionString = connectionString;
conn.Open();
Hinweis : Jeder Code wird in die Public Domain freigegeben. Keine Zuordnung erforderlich.