WCF下传递EF实体对象中出现异常:无法将 EntityReference 对象序列化

近期项目采用了WCF+Entity Framework+WinForm的框架.使用一个Windows Service托管了WCF用于处理后的一些定时任务,并且充当着逻辑层来处理一些与前端的交互.在Winform运行过程中出现异常,如下图:

image

详细信息中:

异常详细信息

经过再三调试后我们发现,原因是在我的Winform的项目中增加了System.Data.Entity的引用后造成的.

image

下图是我在Winform,也就是WCF客户端中增加System.Data.Entity引用后所生成的DataItem类图

image

这时我在客户端中调用数据实体类时就会出现上述异常.可以看出在当前项目中生成的代理类完全使用了System.Data.Entity.EntityObject作为基类。但是从WCF服务端获取的数据契约类与其有所不同。

解决方法:

1、我去掉System.Data.Entity引用后,又重新生成了客户端代理。

image

自动生成的关系类图如下:

image

2、如果一定要在WCF客户端项目中引入System.Data.Entity则需要服务引用设置中将使用引用的程序集中的类型列表中将System.Data.Entity去掉便可。

image

原文地址:https://www.cnblogs.com/scally/p/2286885.html