Ria服务:返回服务时包含的实体为null

时间:2012-03-16 07:01:55

标签: silverlight ria

我在我的属性上使用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; }    
}

1 个答案:

答案 0 :(得分:1)

RIA Services Client不会序列化除值类型和字符串之外的任何属性,因为通常的导航属性可能导致循环引用,并且无法确定要发送的内容和不发送的内容。此外,为了减少网络流量并为了维持正确的变更跟踪,ChangeSets由RIA Services提交,但仅针对其正在跟踪的实体。

RIA服务旨在复制客户端的实体跟踪,您需要更新,按需获取导航属性(相关实体),您应该让RIA服务管理要发送的内容和不发送的内容。

但Include仅适用于从服务器到客户端,从客户端到服务器不起作用,实际上如果您对导航属性进行更改,RIA服务将确定并正确发送ChangeSet。

除此之外,您还必须创建一个普通的WCF服务或Web服务,以使其工作并从客户端访问。

支持仅包含值类型的复杂类型,但它们不能是具有实体键的实体类型。