【发布时间】:2017-05-02 17:37:33
【问题描述】:
在我的 C# 应用程序中,我试图通过中间 DLL 发送请求以将数据添加到 QuickBooks。中间 DLL 基于设置,通过 WCF 服务发送项目添加请求。服务项目对其中包含的所有方法使用操作合同。它没有任何数据契约/数据成员。
这适用于发票和其他交易。但是,在添加项目时,我收到此错误:
类型的第一次机会异常 'System.Runtime.Serialization.SerializationException' 发生在 System.Runtime.Serialization.dll
附加信息:类型 'System.Data.Entity.DynamicProxies.QBLookUp_A96F53AD8DA6F21651FEF0B25078616AB4989DA745EE06E345D365196574CE0F' 带有数据合同名称 'QBLookUp_A96F53AD8DA6F21651FEF0B25078616AB4989DA745EE06E345D365196574CE0F:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' 预计不会。如果您是,请考虑使用 DataContractResolver 使用 DataContractSerializer 或添加任何静态未知的类型 已知类型的列表 - 例如,通过使用 KnownTypeAttribute 属性或通过将它们添加到传递给 序列化器。
在 Stack Overflow 上环顾四周,我遇到了几个建议关闭我的 EF 模型中的代理创建以解决此问题的线程。所以我将这段代码插入到我的 EF 项目的构造函数中:
this.Configuration.ProxyCreationEnabled = false;
但是,当我关闭代理创建时,我遇到了两个新问题:
A) 各种数据位未显示在我的 C# 应用程序中。此数据由实体框架提供给应用程序。
B) 我在尝试通过 WCF 服务保存项目时收到此错误:
附加信息:“System.Collections.Generic.HashSet`1[[EFModel.Item, EFModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]”类型的对象图包含循环,无法序列化如果参考跟踪被禁用
这使我得出以下结论 - 我需要启用代理创建才能使我的应用程序正常工作,同时我的服务可能有问题。有没有人对我可以改变什么来让事情正常工作有什么建议?
【问题讨论】:
标签: c# entity-framework wcf