0

Entity Framework 6とSQL Server Compact 4.0がインストールされたWPFプロジェクトを標準でセットアップしました。プロジェクトをビルドすると、SQL Server CE の展開に必要なすべてのファイルがReleaseフォルダーに正しくコピーされますSystem.Data.SqlServerCe.dll

ただし、SQL Server Compact がインストールされていないマシンでプロジェクトを実行すると、System.IO.FileLoadException.

私の開発環境では、System.Data.SqlServerCe.dllGAC からロードされます。dll のバージョン番号が説明されているこのリファレンスを見つけました: http://technet.microsoft.com/en-us/library/gg213826.aspx

アセンブリ形式 NuGetのバージョンSystem.Data.SqlServerCe.dllは 4.0.0.0 だと思います。

System.Data.SqlServerCe.dllそのため、プロジェクトの参照をプライベート フォルダーから 4.0.0.1 ファイルに手動で変更し、 System.Data.SqlServerCe.dll4.0.0.1 を運用マシンにコピーしました。

私はapp.configそのように変更しました:

  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>

今、私は開発マシンでこの例外を受け取ります:

指定された接続のタイプは「SqlCeConnection」ではありません。

本番マシンではSystem.Data.Entity.Core.EntityException.

NuGet と EF 6 を使用してプライベート展開を行う機会はありますか? それとも、x86、amd64 フォルダー内のすべてのファイルを手動でコピーする必要がありますか?

4

1 に答える 1

0

これSystem.Data.Entity.Core.EntityExceptionはアプリ内ですでに問題がありました。デプロイ後に DB 名を変更するのも忘れていました。

私はこのガイドに従っていますが、現在は機能しています:

http://erikej.blogspot.sk/2013/11/entity-framework-6-sql-server-compact-4_25.html

于 2013-11-30T09:45:58.617 に答える