23

私のプロジェクトでは、エンティティ フレームワークで 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: 
4

4 に答える 4

37

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

于 2013-06-13T04:15:17.340 に答える
3

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

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

編集: 上記のリンクは 404 を返すようになりました。これが正しいダウンロード場所です: https://www.microsoft.com/en-us/download/details.aspx?id=30709

于 2012-12-12T08:11:29.383 に答える
2

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

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

記事を調べてみると、以下のリンクにたどり着きました。次の引用は、何がうまくいかなかったかを説明しています。

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

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

于 2014-12-01T11:13:41.307 に答える