C# 序列化。服务。
我在ria服务中使用了三个类: 首先是响应类:C# 序列化。服务。,c#,.net,wcf-ria-services,silverlight-5.0,C#,.net,Wcf Ria Services,Silverlight 5.0,我在ria服务中使用了三个类: 首先是响应类: [DataContract] public class ValidationResponseContainer { [DataMember] public string EntityId { get; set; } [DataMember] public bool IsWarning { get; set; } [DataMember] public string ConstraintName {
[DataContract]
public class ValidationResponseContainer
{
[DataMember]
public string EntityId { get; set; }
[DataMember]
public bool IsWarning { get; set; }
[DataMember]
public string ConstraintName { get; set; }
[DataMember]
public IEnumerable<string> Fields { get; set; }
}
第三是请求:
[DataContract]
[KnownType(typeof(FieldValueContainer))]
public class ValidationRequestContainer
{
[DataMember]
public string EntityId { get; set; }
[DataMember]
public string TableName { get; set; }
[DataMember]
public IEnumerable<FieldValueContainer> FieldValues { get; set; }
public ValidationRequestContainer()
{
FieldValues = new List<FieldValueContainer>();
}
}
我的datacontract类有什么问题 如何填写字段值?看起来它在序列化之前被重新分配了LINQ查询结果(将FieldValue集标记为“private”将在某种程度上强制FieldValue实际上是一个列表),我会检查代码的所有部分,并确保FieldValue是Listok,顺便说一句,您缺少FieldValues上的AssociationAttribute以及FieldValueContainer上相应的reference和Fk字段。WCF Ria关联始终作为单独的实体发送到连线
[DataContract]
[KnownType(typeof(FieldValueContainer))]
public class ValidationRequestContainer
{
[DataMember]
public string EntityId { get; set; }
[DataMember]
public string TableName { get; set; }
[DataMember]
public IEnumerable<FieldValueContainer> FieldValues { get; set; }
public ValidationRequestContainer()
{
FieldValues = new List<FieldValueContainer>();
}
}
Exception System.Runtime.Serialization.InvalidDataContractException Type 'System.Linq.Enumerable+WhereSelectEnumerableIterator`2[_2020vision.Infrastructure.FieldValueContainer,System.String]' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types.
at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException(String message, Type type)