Asp.net mvc 2 部署SQLCE.EntityFramework 4.0.8435.1

Asp.net mvc 2 部署SQLCE.EntityFramework 4.0.8435.1,asp.net-mvc-2,entity-framework-4,sql-server-ce,code-first,Asp.net Mvc 2,Entity Framework 4,Sql Server Ce,Code First,我已经在一个我一直在工作的项目中应用了SQLCE。 它在VisualStudio和本地运行时运行良好(http://localhost:####)它运行得很好。 但当我在我的远程主机上发布它时,我会收到“死亡黄屏”以下错误消息: 未能找到或加载已注册的.Net Framework数据提供程序 我的Web.Config和引用还可以(正如我所说的,它在localhost上工作得很好),没有必要对其进行更改。 sdf文件部署在正确的路径中 缺少什么?问题在于远程主机没有SQLCE的提供程序。如果您查看

我已经在一个我一直在工作的项目中应用了SQLCE。 它在VisualStudio和本地运行时运行良好(http://localhost:####)它运行得很好。 但当我在我的远程主机上发布它时,我会收到“死亡黄屏”以下错误消息:

未能找到或加载已注册的.Net Framework数据提供程序

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


缺少什么?

问题在于远程主机没有SQLCE的提供程序。如果您查看连接字符串,它是这样的:

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

在.NET4.0之后,所以它没有包含在标准的.NETFramework4.0中。所以SqlServerCe.4.0提供程序丢失了

我找到了答案。 当SQLCE安装到项目中时,它会在webapp的bin目录下添加一些文件和文件夹

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

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

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


部署这些文件后,应用程序在远程主机上也运行良好。

否。连接字符串正确。请参阅我发布的正确答案。我没有说您的连接字符串错误,我是说您的远程主机没有安装SqlServerCe.4.0提供程序,因为它是在.Net 4.0之后发布的。有时候,在投票否决之前先阅读答案是个好主意:)他们不需要安装SqlServerCe 4.0。我上面提到的DLL足以使用sdf文件SQLCE功能。我认为这是SQLCE 4.0最好的地方,我不再依赖于主机db config an限制。我同意,它可以在不依赖主机的情况下进行配置是很好的。我认为一旦发布.Net 4.0 SP1,您就不需要将SQLCE DLL复制到bin目录中,因为它们将随标准的.Net framework安装一起提供。谢谢,这确实帮了我的忙:)我使用了这里描述的基于私有文件的部署:最简单的解决方案是添加一个生成后步骤,从NuGet package NativeBinaries文件夹复制这些文件。重复