0

这行代码

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

抛出此异常

System.Configuration.ConfigurationErrorsException:未能找到或加载注册的 .Net Framework 数据提供程序。

虽然我的 machine.config 文件包含以下部分

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

我错过了什么吗?我应该看看别的地方吗?像代码一样DbProviderFactory factory = SqlCeProviderFactory.Instance工作正常。

4

2 回答 2

2

多个 SQL Server CE 安装Visual Studio 工具提供服务器资源管理器和设计组件,并将 SQL Server CE DLL 放置在 Visual Studio 的本地位置。我需要安装运行时才能在 machine.config 文件中注册数据提供程序。

于 2009-05-27T14:16:48.623 回答
1

在 Visual Studio 2012 中,默认的ProviderNameSystem.Data.SqlServerCe.4.0.

这让可以按名称找到工厂:

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

注意:任何代码都会发布到公共领域。无需归属。

于 2013-09-28T20:46:22.970 回答