带有代理的 WCF 服务无法连接到 EntityFramework

Posted

技术标签:

【中文标题】带有代理的 WCF 服务无法连接到 EntityFramework【英文标题】:WCF Service with Proxy cannot connect to EntityFramework 【发布时间】:2017-09-18 22:36:27 【问题描述】:

我想用代理实现 WCF 服务。服务和代理位于 2 个不同的项目中。 entityFramework 位于 Service 项目中。在代理的 app.config 中,我将连接字符串如下:

<add name="foodOrderEntities" connectionString="metadata=res://*/foodOrderEF.csdl|res://*/foodOrderEF.ssdl|res://*/foodOrderEF.msl;provider=System.Data.SqlClient;
provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\foodOrder.mdf;integrated security=True;connect timeout=30;
MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

但是当我尝试使用服务测试客户端调用该方法时,出现以下异常: @"在 ADO.NET 提供程序的应用程序配置文件中注册的实体框架提供程序类型 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' 不能是不变名称 'System.Data.SqlClient'已加载。确保使用了程序集限定名称,并且程序集可用于正在运行的应用程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。"

请任何人告诉我如何设置连接字符串以使代理项目 serviceHost 可以成功访问数据库?还是我需要为 EF 对象独立创建另一个项目,然后添加引用?

【问题讨论】:

【参考方案1】:

对不起,伙计们,我发现了另一个与此问题相关的帖子。 No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'

毕竟我需要做的只是将EntityFramework.SqlServer.dll的引用添加到代理项目中。

【讨论】:

【参考方案2】:

尝试在服务项目中安装 Nuget Entity Framework 下载。我很确定服务项目和 ADO.NET 数据层项目都应该安装实体框架。

【讨论】:

以上是关于带有代理的 WCF 服务无法连接到 EntityFramework的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到我的Localhost上的WCF服务

当客户端甚至无法连接到 WCF 服务器时,为啥会出现“服务器堆栈跟踪”异常?

无法连接到远程服务器 wcf服务

使用连接到 WCF 服务的 Java 客户端在 XML 正文中嵌入 XML 指令

带有 WCF 服务的 Silverlight 3 -

使用 gSOAP 连接到 WCF Web 服务