不変名でSQL Server CEプロバイダーファクトリを解決できません
-
05-07-2019 - |
質問
このコード行
DbProviderFactory factory = DbProviderFactories.GetFactory("Microsoft.SqlServerCe.Client");
この例外をスローします
System.Configuration.ConfigurationErrorsException: 登録済みの検索またはロードに失敗しました .Net Framework Data Provider。
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
のようなコードは正常に動作します。
解決
複数のSQL Server CEインストールがあります。 Visual Studioツールサーバーエクスプローラーとデザインコンポーネントを提供し、SQL Server CE DLLをVisual Studioのローカルの場所に配置します。 ランタイムをインストールする必要がありましたmachine.configファイルに登録されているデータプロバイダーを取得します。
他のヒント
Visual Studio 2012では、デフォルトの ProviderName は System.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();
注:すべてのコードはパブリックドメインにリリースされます。帰属表示は不要です。
所属していません StackOverflow