Windows 2012 SERVER - 找不到与不变名称为'System.Data.SqlClient'的ADO.NET提供程序对应的实体框架提供程序。

4
我有一个使用EF6的WebAPI 2项目,在本地机器上运行非常完美。但是,当我发布该解决方案并将其上传到服务器时,出现以下错误:
System.Data.Entity.Core.MetadataException: 指定的模式无效。错误: Database.FooModel.ssdl(2,2) : error 0152:在应用程序配置文件的 'entityFramework' 部分中注册ADO.NET提供程序名称为 'System.Data.SqlClient' 的Entity Framework提供程序。
注意: 我看到很多关于修复开发机的帖子,但我的问题不是那个。我的问题是上传代码到Windows 2012服务器后的问题。
问题: 如何确保服务器在上传EF6解决方案时获得正确的设置? 我已经将服务器更新为DotNet 4.5.1,还需要在服务器上安装什么?
2个回答

7

=======================================
解决方案: 不幸的是,我不得不重新启动一个新的应用程序,并快速复制文件,这解决了问题。现在服务器运行得非常完美。如果我查看发布的文件(之前和之后),我会看到更新的“EntityFramework.dll”文件版本以及bin目录中的新“EntityFramework.SqlServer.dll”文件。我还注意到,“Microsoft.Data.Edm.dll和Microsoft.Data.OData.dll”不在新版本中。

不确定这些信息是否有帮助..但至少我们知道我们可以创建一个新的应用程序,它能够正常工作!!!


3
感谢你提供的有用信息,对我很有帮助。在我的情况下,EntityFramework.SqlServer.dll没有被发布。一旦我把这个文件放到服务器上,一切都正常了! - MatthewT
1
谢谢你们两个 - 我也缺少 EntityFramework.SqlServer.dll。删除并重新添加引用似乎解决了问题。 - Adam Plocher
我也遇到了同样的问题,但按照上面提到的步骤无法解决。是否有其他解决方案?我在特定服务器上遇到了这个问题,在另一个服务器上运行良好。有什么建议吗? - Channa

1
将"EntityFramework.SqlServer.dll"复制到服务器的bin目录中,或将其作为引用添加到解决方案中并重新发布。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接