使用RIA服务序列化实体

时间:2010-07-01 16:08:24

标签: silverlight entity-framework serialization wcf-ria-services

我有一个Silverlight应用程序需要相当多的数据才能运行,并且它需要一切预先准备好。它使用RIA服务(和实体框架)来获取所有信息。获取所有数据需要10-15秒,但数据每月只会改变一次。

我想做的是将数据投入隔离存储,以便下次加载应用程序时,我可以抓住它,查看它是否已更新,如果不使用它们已经获得的数据并节省大量时间通过电线发送东西。

我需要存储的图形结构(或多或少)是典型的树形结构。模型具有组件,组件具有功能,功能具有选项。我遇到的问题是,当我要求将这个根实体(模型)序列化时,它只是序列化顶级对象并忽略所有“子”对象。

有没有人知道一种方便的方法来让它序列化/反序列化整个图形?

1 个答案:

答案 0 :(得分:0)

如果RIA服务是问题,那么我可能会有一个提示。

通过RIA传输对象的集合,你需要对域模型进行一些调整。

假设您的收据上有ReceiptEntries列表。那你就做了。

public Receipt {
    public guid Id;
    public List<ReceiptEntry> Entries;
}


public ReceiptEntry {
    public guid ReceiptId;
}

你必须告诉RIA如何关联这些对象。

[Include()]
[Composition()]
[Association("ReceiptEntries", "Id", "ReceiptId"]
public Receipt {
    public guid Id;
    public List<ReceiptEntry> Entries;
}

然后它将序列化对象列表。

我可能会编写奇怪的语法,因为我习惯于VB.net或者在示例代码中有一些小错误,只是把它扔了。但是如果问题是RIA没有按照它的方式发送对象,那么你应该调查这个场景。如果你还没有。