2009-05-05 38 views
0

這行代碼不能由固定名稱

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

回答

1

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

注意:任何代碼發佈到公共領域。無需歸屬。