ASP.NET WebService - 实体框架

Posted

技术标签:

【中文标题】ASP.NET WebService - 实体框架【英文标题】:ASP.NET WebService - Entity Framework 【发布时间】:2011-12-10 00:14:29 【问题描述】:

我有一个使用 Entity Framework 4.0 的 ASP.NET Web 服务。

当我在本地运行 WebService 上的方法之一时,它会引发以下异常:

System.InvalidOperationException:生成错误 XML 文档。 ---> System.InvalidOperationException: 成为 XML 可序列化,从 IEnumerable 继承的类型必须具有 Add(System.Object) 在其所有级别的实现 继承层次结构。 System.Data.Objects.ObjectQuery`1[[testGoogleEarth.Model.Marker, testGoogleEarth,版本=1.0.0.0,文化=中性, PublicKeyToken=null]] 没有实现 Add(System.Object)。在 System.Xml.Serialization.TypeScope.GetEnumeratorElementType(类型类型, 类型标志和标志)在 System.Xml.Serialization.TypeScope.ImportTypeDesc(类型类型, MemberInfo memberInfo,布尔直接参考)在 System.Xml.Serialization.TypeScope.GetTypeDesc(类型类型,MemberInfo 源,布尔 directReference,布尔 throwOnError)在 System.Xml.Serialization.XmlSerializationWriter.CreateUnknownTypeException(类型 类型)在 System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(字符串 名称、字符串 ns、对象 o、布尔 xsiType)在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(字符串 n, String ns, Object o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write7_JsonResult(字符串 n, String ns, JsonResult o, Boolean isNullable, Boolean needType) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_JsonResult(对象 o) 在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter、Object o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle, String id) --- 内部异常堆栈跟踪结束 --- 在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle,字符串 id)在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter、Object o、XmlSerializerNamespaces 命名空间)在 System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse 响应,流输出流,对象返回值)在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] 返回值)在 System.Web.Services.Protocols.WebServiceHandler.Invoke()

我在 Windows Server 2008 上运行此示例。已安装 .NET 4.0。

有什么想法吗?

谢谢

【问题讨论】:

请,在提出问题时,您无需提供异常页面,而是先发布您的代码并在您的异常中给出主要句子。所以,我们可以帮助你。 这是我得到的全部异常!我在 Ef 4.0 中使用 ASP.NET Web 服务。 【参考方案1】:

您用于通过网络对 WCF 请求进行序列化的 XMLSerializer 存在问题。对象图中的任何 IEnumerable 类都应该有一个公共的 add 方法。在此处查看一些详细信息http://www.hanselman.com/blog/YouMustImplementTheAddSystemObjectMethodOnMyClassBecauseItInheritsFromIEnumerable.aspx

【讨论】:

它是一个 ASP.NET Web 服务而不是使用 EF 4.0 的 WCF 对不起,问题与序列化程序有关,与 WCF 服务\asmx 服务无关。你检查对象图了吗? 如何查看对象图?其实不知道。谢谢 对于您通过网络发送的对象,检查它们及其子对象,并确保这些对象中的任何一个具有 IEnumerable 定义,它们也应该具有 Add 方法

以上是关于ASP.NET WebService - 实体框架的主要内容,如果未能解决你的问题,请参考以下文章

实体框架和 ASP.NET 的最佳实践

ASP.NET C# MVC 实体框架

实体框架代码优先和 ASP.NET 成员资格

实体框架、ASP.NET 和 SQL Server CE

Asp.net 如何使用实体框架删除一对多的对象

ASP.NET 5 ,想要将实体框架从 Web 项目中分离出来