我刚刚将我的主机升级到MVC 3,但我正在尝试使用SQLCE 4.0做一个"hello world",但我得到了:
很抱歉,在执行您的要求时发生了一个错误.
我看到我的布局和一切,但我看到的不是数据.
在localhost上按预期工作
我有:
作为connectionString.
我把sdf作为项目的一部分,我将System.Data.SqlServerCE.dll添加到项目中,并将本地副本设置为true.
我没有更多的想法.connString,dll在/ bin中,在localhost中工作.
有任何想法吗?
谢谢.
编辑
我现在有一些日志:
没有/ bin上的"System.Data.SqlServerCE.dll":
无法找到请求的.Net Framework数据提供程序.它可能没有安装.
System.ArgumentException:无法找到请求的.Net Framework数据提供程序.它可能没有安装.
很好.他们没有SqlServerCE4.
使用本地副本上的Dll,AKA/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.
KB说我需要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:\ HostingSpaces\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll'或其依赖项之一.该模块应该包含一个程序集清单.
我想我尝试过所有的事情.Scottgu说SqlServerCE 4应该可以在没有安装的任何服务器上运行.
我不喜欢回答我自己的答案,但经过几个小时的工作,我得到了答案!
我们需要:
NuGet(比从程序文件中复制dll更好)
使用NuGet,我们安装:
EFCodeFirst
SqlServerCompact
EFCodeFirst.SqlServerCompact
问题是EF需要另一个用于SQL CE 4的DLL(System.Data.SqlServerCe.Entity.dll),我们需要在web.config上放置一些配置:
有了它,一切正常.我见过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.