【问题标题】:Cannot resolve SQL Server CE provider factory by invariant name无法通过固定名称解析 SQL Server CE 提供程序工厂
【发布时间】:2009-05-05 13:50:32
【问题描述】:

这行代码

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 这样的代码可以正常工作。

【问题讨论】:

  • 我没有 Microsoft.* 在 Sql Server Ce 的 machine.config 部分中列出的任何 DLL...我有 System.Data.SqlServerCe v9.0.242.0。跨度>

标签: sql-server ado.net machine.config


【解决方案1】:

multiple SQL Server CE installsVisual Studio tools 提供服务器资源管理器和设计组件,并将 SQL Server CE DLL 放置在 Visual Studio 的本地位置。我需要安装runtime 以在 machine.config 文件中注册数据提供程序。

【讨论】:

    【解决方案2】:

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

    这让 me 按名称查找工厂:

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      相关资源
      最近更新 更多