Asp.net mvc 3 在具有MVC 3的远程主机上使用SQL Server CE 4

Asp.net mvc 3 在具有MVC 3的远程主机上使用SQL Server CE 4,asp.net-mvc-3,sql-server-ce,sql-server-ce-4,Asp.net Mvc 3,Sql Server Ce,Sql Server Ce 4,我刚刚将我的主机升级到MVC 3,但我正在尝试使用SQLCE 4.0进行“hello world”,但我得到了: 很抱歉,执行此操作时出错 正在处理您的请求 我看到了我的布局和一切,但我看到的不是数据 本地主机上的主机正在按预期工作 我有: <add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.D

我刚刚将我的主机升级到MVC 3,但我正在尝试使用SQLCE 4.0进行“hello world”,但我得到了:

很抱歉,执行此操作时出错 正在处理您的请求

我看到了我的布局和一切,但我看到的不是数据

本地主机上的主机正在按预期工作

我有:

<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>

作为连接字符串

我将sdf作为项目的一部分,我将System.Data.SqlServerCE.dll添加到项目中,本地副本为true

我没有更多的想法。连接字符串,dll位于/bin中,并且在localhost中工作

有什么想法吗

谢谢

编辑

我现在有一些日志:

如果/bin上没有“System.Data.SqlServerCE.dll”:

找不到请求的.Net Framework数据提供程序。它可能没有安装

System.ArgumentException:找不到请求的.Net Framework数据提供程序。它可能没有安装

很好。他们没有SqlServerCE4

当Dll位于本地副本上时,也称为/bin:

无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact本机组件。安装SQL Server Compact的正确版本。有关更多详细信息,请参阅知识库文章974247

异常详细信息:System.Data.SqlServerCe.SqlCeException:无法加载与版本8482的ADO.NET提供程序相对应的SQL Server Compact的本机组件。安装SQL Server Compact的正确版本。有关更多详细信息,请参阅知识库文章974247

知识库说我需要来自x86和amd64的dll。我在某处读到,如果我将两个目录复制到/bin,比如:/bin/x86和/bin/amd64。我从SqlServerCE 4安装文件夹的私有文件夹中复制了该文件夹。现在我得到了:

在ADO.NET提供程序和SQL Server Compact的本机二进制文件之间检测到可能的文件版本不匹配,这可能导致功能不正确。这可能是由于存在多个不同版本的SQL Server Compact实例,或者由于与SQL Server Compact二进制文件同名的错误二进制文件。请安装匹配版本的SQL Server Compact二进制文件

嗯。在SQLServerCE4的根文件夹上,我也有一些dll,因此我删除了这两个文件夹,并将该dll复制到/bin:

无法加载文件或程序集的file:///C:\hostingspace\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll'或其依赖项之一。模块应包含程序集清单


我想我尝试了所有的事情。Scottgu说SqlServerCE 4应该可以在任何服务器上运行,而无需安装。

这看起来像是由于项目中保留了多个中间数据位而导致的问题,在项目中,您在不清理的情况下替换了包含的文件

我建议先执行Build->Clean all,然后确保所有引用都指向新的、正确的DLL,然后确保项目中的任何位置都没有旧文件或引用。完成后,尝试重建


由于这是一个hello world项目,因此从零开始创建一个新项目,并在其中包含正确的DLL可能会更容易。

您需要确保您的私有应用程序目录(例如.\bin)中除了托管的DLL之外还有本机SQL CE 4.0 DLL

从“C:\Program Files(x86)\Microsoft SQL Server Compact Edition\v4.0\Private\amd64”(或x86,如果您有32位应用程序)复制它们

部署MSVCR90.dll及其清单也是明智的。请查看C:\Program Files(x86)\Microsoft SQL Server Compact Edition\v4.0中的文档
有关所需DLL和重新分发的更多信息。

我不想回答我自己的答案,但工作几小时后我有了答案

我们需要:

NuGet(优于从程序文件复制dll)

使用NuGet,我们安装:

EFCodeFirst

SqlServerCompact

EFCodeFirst.SqlServerCompact

问题是EF需要SQL CE 4的另一个dll(System.Data.SqlServerCe.Entity.dll),我们需要在web.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.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </DbProviderFactories>
  </system.data>

有了这些,一切都在运转。我看到了5种不同的错误,因此我们需要:

SQL CE 4中的2 dll、EF dll、web.config中的配置和本机dll(从NuGet下载库的包目录)

web.config配置似乎指向了SQL CE.dll的具体版本,而RTM包的版本则有所不同。我找不到具体的版本,所以我使用NuGet中的.dll

仅此而已,远程主机上的SQL CE 4+EF。

只需使用菜单“Project/Add Deployable Dependencies…”
我不确定它是否仅适用于Visual Studio 2010 SP 1。

尝试手动安装SQL CE


祝你好运。

我也有同样的问题。尝试在我的goDaddy帐户上使用代码优先的SQL CE 4.0应用程序

我开始胡乱处理基于上述线程和其他教程的各种DLL文件,但似乎没有任何效果。有些东西不见了。然后我阅读了关于添加可部署依赖项的响应

我这样做了,创建了_bin_deployableAssemblies文件夹。然后我删除了bin文件夹中除核心项目的DLL之外的所有内容,并将_bin_deployableAssemblies中的所有内容复制到bin文件夹中

我清除了goDaddy应用程序中bin文件夹中的所有内容,并重新同步了文件。成功了。应用程序将加载,如果我对类进行codefirst更改,dbcontext将为我重新创建数据库。当然,我不希望在生产中出现这种情况,但我想知道一切都正常

我确实尝试过使用ASP教程将MVC应用程序部署到托管环境中(他们使用Cytanium托管作为示例),但在GoDaddy上对我不起作用。我哈