我正在开发Silverlight应用程序。它使用WCF服务从客户端到服务器来回传递EF 4自我跟踪实体 Read方法可以很好地从WCF服务向Tracklight实体集合提供服务。即使是基本更新也能正常工作。我可以修改“OfficeEntity”的属性,并将其作为参数传递给WCF更新方法。 我们遇到的问题是当我们更新其中一个Entity的集合时,我们得到以下反序列化错误。例如,如果“OfficeEntity”具有导航属性“Locations”,它是“LocationEntity”的集合,并且我们向“Locations”属性添加新的“Location”并保存它,我们将获得反序列化异常。
officeEntity.Locations.Add(new Location(){LocationName =“Test 1”});
client.SaveAsync(officeEntity);
异常详细信息:
格式化程序在尝试反序列化消息时抛出异常: 尝试反序列化参数时出错:OfficeEntity。 InnerException>消息是 '反序列化Entities.OfficeEntity类型的对象时出错。 结束元素'ObjectsAddedToCollectionProperties'来自命名空间>'http://schemas.datacontract.org/2004/07/Entities'预期。 在命名空间>'http://schemas.datacontract.org/2004/07/Entities'中找到元素'b:AddedObjectsForProperty'。'
问题在于反序列化更改跟踪属性。关于导致这个问题或者我可以解决的问题的任何想法?
谢谢, 杰森
答案 0 :(得分:0)
自我跟踪实体在跟踪客户端是否未使用实际生成的实体时存在问题 - 我在博客中发表了here。
不确定这是否是序列化问题的根源,但肯定会对您能够使用自我跟踪实体产生影响