web-dev-qa-db-ja.com

ADO.NETプロバイダーに対応するSQL Server Compactのネイティブコンポーネントを読み込めません

私のプロジェクトでは、エンティティフレームワークでSQL CE 3.5データベースを使用し、その後 この記事 を使用していますが、次の例外があります。

バージョン8080のADO.NETプロバイダーに対応するSQL Server Compactのネイティブコンポーネントを読み込めません。正しいバージョンのSQL Server Compactをインストールしてください。詳細については、KB記事974247を参照してください。

すべての詳細

System.Data.SqlServerCe.SqlCeException was unhandled
  Message=Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8080. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
  Source=""
  HResult=-1
  NativeError=-1
  StackTrace:
       at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
       at System.Data.SqlServerCe.SqlCeConnection..ctor()
       at System.Data.SqlServerCe.SqlCeProviderFactory.CreateConnection()
       at System.Data.EntityClient.EntityConnection.GetStoreConnection(DbProviderFactory factory)
       at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
       at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
       at DAL.OimDBEntities..ctor()
       at DAL.OimRepository..ctor()
       at Microsoft.Rtc.Collaboration.Sample.SubscribePresenceView.UCMASampleSubscribePresenceView.Subscribe()
       at Microsoft.Rtc.Collaboration.Sample.SubscribePresenceView.UCMASampleSubscribePresenceView.Run()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.DllNotFoundException
       Message=Unable to load DLL 'sqlceme35.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
       Source=System.Data.SqlServerCe
       TypeName=""
       StackTrace:
            at System.Data.SqlServerCe.NativeMethods.GetSqlCeVersionInfo(IntPtr& pwszVersion)
            at System.Data.SqlServerCe.NativeMethods.LoadValidLibrary(String modulePath, Int32 moduleVersion)
            at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
       InnerException: 
21
Tarek Saied

SqlServerCEのプライベートインストールでこのエラーが発生しました。プロジェクトにSystem.Data.SqlServerCe.dllへの参照がありましたが、SqlServerCEに必要な他のdll(ネイティブコンポーネント)がありませんでした。 「ネイティブコンポーネント」は、SqlServerCEの「プライベート」フォルダーのx86およびAMD64サブフォルダーにあります。それらがプロジェクトの出力フォルダーにコピーされることを確認する必要があります。

33
Tom Andraszek

同様の問題がありました。コンパクトなフレームワークSQLデータベースを開いていたところ、次のエラーが発生しました。

バージョン8080のADO.NETプロバイダーに対応するSQL Server Compactのネイティブコンポーネントを読み込めません。正しいバージョンのSQL Server Compactをインストールしてください。詳細については、KB記事974247を参照してください。

記事を調べたところ、次の Link が表示されました。次の引用は何がうまくいかなかったかを説明しています:

コンパクトベースのアプリケーションは通常、コンパクトADO.NETプロバイダー(System.Data.SqlServerCe.dll)に対してプログラムします。このプロバイダーは、ネイティブのCompactコンポーネントと通信します。さまざまな不整合を回避するために、特定のバージョンのCompact ADO.NETプロバイダーは、同じバージョンのCompactネイティブコンポーネントとのみ通信できます。

最後に、次のサービスパックをダウンロードしてインストールすることで解決しました link。

2
martijn

私も同じ問題に遭遇しました。問題は、次のコマンドinstall-package EFcodeFirst.SqlServerCompactを使用してsqlCEを取得していたことです。パッケージマネージャーによってダウンロードされたバージョンは4.0でしたが、私のハードディスクでは、バージョンは3.5でした。

次の場所から最新バージョン4.0をダウンロードしてください http://www.Microsoft.com/en-us/download/details.aspx?id=17876 問題は解決しました

2
Ashish Gupta

次のファイルとディレクトリ全体を、サーバー上の.exeが実行されている場所にコピーする必要があります。このファイルとフォルダーは、ディレクトリC:\ Program Files(x86)\ Microsoft SQL Server Compact Edition\V4.0\Privateにあります。

System.Data.SqlServerCe.dll AMD64フォルダー全体の使用状況は不明ですが、AMD64フォルダーから何を使用するかはわかりませんが、アプリケーションにコピーするとすぐに機能し始めました。 System.Data.SqlServerCe.dllファイルは、Visual Studioの[参照設定]フォルダーをクリックし、[プロパティ]タブで[ローカルのコピー]をTrueに設定して、アプリをビルドすると、そのファイルがリリースフォルダ。

1