通过WCF RIA服务发送复杂的结构

时间:2011-11-23 09:22:59

标签: c# silverlight wcf-ria-services

我在发送复杂结构时遇到了麻烦。 我有两节课。我通过ria服务发送一个消息列表,每条消息都包含一个描述参与对话的人的类列表 - MailInfo

public class Message
{
    [Key] 
    public string Id { get; set;}
    public string ParentId { get; set; }
    public List<MailInfo> Email { get; set; }
}

public class MailInfo
{
    [Key]
    public string Address { get; set; }
}

发送消息列表我使用

[Query]
public IQueryable<Message> GetMessage() {return null;}
[Query]
public IQueryable<MailInfo> GetMailInfo() { return null; }

并最终

[Invoke]
public List<Message> SomeMethod ()
{ return listofMessages; }

但我无法访问Message的Email字段。我可以做点什么吗?或者Silverlight不支持这种复杂的结构吗?

2 个答案:

答案 0 :(得分:2)

实际上我发现你不能正确发送这样的类对象。关键是RIA服务禁用了要发送的类的非POCO对象的setter。 您可以在生成的代码.Web.g.cs中看到它。 我发现的唯一美妙的解决方案是将List EMail作为序列化字符串发送。所以在那之后,实体中的所有字段都是POCO,你终于得到了对象。

答案 1 :(得分:1)

public class Message
{
    [Key] 
    public string Id { get; set;}
    public string ParentId { get; set; }
    [Include]
    public List<MailInfo> Email { get; set; }
}

public class MailInfo
{
    [Key]
    public string Address { get; set; }
}

尝试使用该属性。如果它在您的数据库中链接,它应该为您提供这些。