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.dll从 GAC 加载的。我找到了这个参考,其中解释了 dll 的版本号:http ://technet.microsoft.com/en-us/library/gg213826.aspx

我认为System.Data.SqlServerCe.dllNuGet 的程序集版本是 4.0.0.0。

所以我手动将System.Data.SqlServerCe.dll项目中的引用更改为 Private 文件夹中的 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应用程序中已经存在问题,我也忘记在部署后更改数据库名称。

我已按照本指南进行操作,现在可以使用:

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

于 2013-11-30T09:45:58.617 回答