Question

Cette ligne de code

DbProviderFactory factory = DbProviderFactories.GetFactory("Microsoft.SqlServerCe.Client");

lève cette exception

  

System.Configuration.ConfigurationErrorsException:   Impossible de trouver ou de charger le membre enregistré   Fournisseur de données .Net Framework.

Bien que mon fichier machine.config contienne la section suivante

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

Est-ce que je manque quelque chose? Dois-je regarder ailleurs? Un code comme DbProviderFactory factory = SqlCeProviderFactory.Instance fonctionne correctement.

Était-ce utile?

La solution

Il existe plusieurs installations de SQL Server CE . Outils Visual Studio fournit l'explorateur de serveur et les composants de conception et place les DLL SQL Server CE dans un emplacement local de Visual Studio. Je devais installer le runtime . pour obtenir le fournisseur de données enregistré dans le fichier machine.config.

Autres conseils

Dans Visual Studio 2012, le nom du fournisseur par défaut est System.Data.SqlServerCe.4.0 .

Ceci permet à moi de trouver une usine par son nom:

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();
  

Remarque : tout code est publié dans le domaine public. Aucune attribution requise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top