不能由固定名称

问题描述:

这行代码不能由固定名称

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

解决的SQL Server CE提供者工厂抛出该异常

System.Configuration.ConfigurationErrorsException: 无法找到或加载注册 净框架数据提供者。

虽然我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工作正常。

+0

我没有任何在Microsoft.*中列出的任何DLL在machine.config部分Sql Server Ce ...我有System.Data.SqlServerCe v9.0.242.0。 – 2009-05-05 14:03:46

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

在Visual Studio 2012中,默认提供程序名称System.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(); 

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