我在我的属性上使用Include
属性,并将它们正确地传回客户端,但是一旦我将其发送回ria服务进行进一步处理,该属性现在为空。
internal sealed class lSyncMetadata
{
private lSyncMetadata()
{
}
public string ConflictMessage { get; set; }
public DateTime DateInserted { get; set; }
public Guid vValueId { get; set; }
[Key]
public Guid ID { get; set; }
public bool IsConflict { get; set; }
public bool IsReadyToSync { get; set; }
public Guid SyncSet { get; set; }
[Include]
public vValue vValue { get; set; }
}
答案 0 :(得分:1)
RIA Services Client不会序列化除值类型和字符串之外的任何属性,因为通常的导航属性可能导致循环引用,并且无法确定要发送的内容和不发送的内容。此外,为了减少网络流量并为了维持正确的变更跟踪,ChangeSets由RIA Services提交,但仅针对其正在跟踪的实体。
RIA服务旨在复制客户端的实体跟踪,您需要更新,按需获取导航属性(相关实体),您应该让RIA服务管理要发送的内容和不发送的内容。
但Include仅适用于从服务器到客户端,从客户端到服务器不起作用,实际上如果您对导航属性进行更改,RIA服务将确定并正确发送ChangeSet。
除此之外,您还必须创建一个普通的WCF服务或Web服务,以使其工作并从客户端访问。
支持仅包含值类型的复杂类型,但它们不能是具有实体键的实体类型。