2009-05-05 7 views
0

をSQL ServerのCEプロバイダファクトリを解決できませんコードは不変名前で

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

のこのラインは、この例外

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

Sql Server Ceのmachine.configセクションには、Microsoft。*に記載されているDLLはありません。System.Data.SqlServerCe v9.0.242.0があります。 –

答えて

2

multiple SQL Server CE installsがあります。 Visual Studio toolsは、サーバーエクスプローラとデザインコンポーネントを提供し、SQL Server CE DLLをVisual Studioのローカルに配置します。私はruntimeをインストールして、データプロバイダをmachine.configファイルに登録する必要がありました。

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

:任意のコードがパブリックドメインに放出されます。帰属は必要ありません。

関連する問題