ef 对象无法序列化的问题(System.Data.Entity.DynamicProxies)

Posted sportdog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ef 对象无法序列化的问题(System.Data.Entity.DynamicProxies)相关的知识,希望对你有一定的参考价值。

错误提示:

System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 不应是类型 System.Data.Entity.DynamicProxies.FrDocMain_6A6FA4013EBB9F316ECF2126518C20341055E52EDEBA21C97E7E8430E7B15A70。使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型。
   在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write5_FrDocMain(String n, String ns, FrDocMain o, Boolean isNullable, Boolean needType)
   在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write7_FrDocument(String n, String ns, FrDocument o, Boolean isNullable, Boolean needType)
   在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write10_FrDocument(Object o)
   在 Microsoft.Xml.Serialization.GeneratedAssembly.FrDocumentSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
   在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
   在 System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
   在 System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
   在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
   在 System.Web.Services.Protocols.WebServiceHandler.Invoke()

 

技术分享

 

解决办法:

 public FrDocMain GetItem(int docId)
        {
            //db.Configuration.ProxyCreationEnabled = false;
            return db.FrDocMains.SingleOrDefault(p => p.DocID == docId);
 
        }

加上被注释的那句就可以了。

以上是关于ef 对象无法序列化的问题(System.Data.Entity.DynamicProxies)的主要内容,如果未能解决你的问题,请参考以下文章

DTO对象

EF中Json序列化对象时检测到循环引用的解决办法

EF4 将 DynamicProxies 转换为基础对象

EF提示“序列化类型为XXX的对象时检测到循环引用”

EF Core - 无法添加具有相同相关对象的实体

EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)