【C#】【SQL Server Compact】接続時に0x80004005エラーが発生する

エラー内容

System.Data.SqlServerCe.SqlCeException (0x80004005): Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8876. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
場所 System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
場所 System.Data.SqlServerCe.SqlCeConnection..ctor()
場所 System.Data.SqlServerCe.SqlCeConnection..ctor(String connectionString)

原因

必要なDLLが配置されていない。

以下のように、DLLが保存されたフォルダごと配置すればOK。

(実行するexeが存在するフォルダ)\amd64
(実行するexeが存在するフォルダ)\x86

「amd64」と「x86」フォルダは、SQL Server Compact用のEntity FrameworkをNuGetで入れると自動でbinの下に入っていた。
インストーラを利用してexeを配布する際には、これらもインストーラに含めて配布する必要がある。

動作確認環境

  • Visual Studio 2017
  • .NET Framework 4.6
  • Windows 7 x86