2

我已经在我一直在工作的项目中应用SQLCE。 它在Visual Studio中正常工作,当我在本地运行时(http:// localhost:####),它可以完美运行。 但是,当我在远程主机上发布它时,我收到“黄色死亡屏幕”,出现以下错误消息:部署SQLCE.EntityFramework 4.0.8435.1

无法找到或加载注册的.Net Framework数据提供程序。

我的Web.Config和引用都可以(正如我说的,它在localhost上工作正常)没有必要对它进行修改。 sdf文件部署在正确的路径中。

缺什么?

+0

重复http://stackoverflow.com/questions/3223359/cant-get-sql-server-compact-3-5-4-to-work-with-asp-net-mvc-2/3223450#3223450 – ErikEJ 2010-11-12 23:16:27

回答

4

我找到了答案。 将SQLCE安装到您的项目时,它将在web应用程序的bin目录下添加一些文件和文件夹。

以下文件和文件夹必须与您的应用程序一起部署在bin文件夹中。

Microsoft.Data.Entity.CTP.dll
System.Data.SqlServerCe.dll
System.Data.SqlServerCe.Entity.dll
WebActivator.dll
[86](文件夹)
[86 ] \ sqlcecompact40.dll
[86] \ sqlceer40EN.dll
[86] \ sqlceme40.dll
[86] \ sqlceqp40.dll
[86] \ sqlcese40.dll
[AMD64](文件夹)
[AMD64] \ sqlcecompact40.dll
[AMD64] \ sqlceer40EN.dll
[AMD64] \ sqlceme40.dll
[AMD64] \ sqlceqp40.dll
[AMD64] \ sqlcese40.dll

的bin文件夹(前面提到的前四个)根目录中的文件已部署,但由于某些原因,未发送x86和amd64文件夹。

我部署了这些文件后,该应用程序也在远程主机上正常工作。

+1

我认为你不需要将SQLCE dll复制到你的bin目录中一次.Net 4.0 SP1将被发布,因为它们将会带有标准的.Net框架安装。 – 2010-11-12 21:33:33

+0

谢谢,这真的帮了我:) – 2011-01-26 13:19:18

+0

我使用了这里描述的基于私有文件的部署:http://msdn.microsoft.com/en-us/library/aa983326%28v=vs.80%29.aspx – 2012-05-03 16:41:19

1

问题是因为您的远程主机没有为SQLCE提供供应商。如果你看看你的连接字符串它是这样的:

<connectionStrings>  
    <add name="name" 
     connectionString="Data Source=|DataDirectory|yourDbFileName.sdf" 
     providerName="System.Data.SqlServerCe.4.0"/>  
</connectionStrings> 

请注意,SQL CE和它的System.Data.SqlServerCe.4.0提供商一直released后.NET 4.0,因此未在标准框架4.0包括在内。所以SqlServerCe.4.0供应商缺少

+0

否。连接字符串是否正确。看到我发布的正确答案。 – 2010-11-12 17:24:47

+0

我没有说你的连接字符串是错误的,我说你的远程主机没有安装SqlServerCe.4.0提供程序,因为它已经在.NET 4.0之后发布了。有时在投票前先阅读答案是个好主意:) – 2010-11-12 17:28:07

+0

他们不需要安装SqlServerCe 4.0。我上面提到的dll足以使用sdf文件的SQLCE功能。 我认为这是关于SQLCE 4.0的最好的事情,我不再依赖于主机数据库配置的限制。 – 2010-11-12 17:37:22