我有一个Silverlight应用程序需要相当多的数据才能运行,并且它需要一切预先准备好。它使用RIA服务(和实体框架)来获取所有信息。获取所有数据需要10-15秒,但数据每月只会改变一次。
我想做的是将数据投入隔离存储,以便下次加载应用程序时,我可以抓住它,查看它是否已更新,如果不使用它们已经获得的数据并节省大量时间通过电线发送东西。
我需要存储的图形结构(或多或少)是典型的树形结构。模型具有组件,组件具有功能,功能具有选项。我遇到的问题是,当我要求将这个根实体(模型)序列化时,它只是序列化顶级对象并忽略所有“子”对象。
有没有人知道一种方便的方法来让它序列化/反序列化整个图形?
答案 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没有按照它的方式发送对象,那么你应该调查这个场景。如果你还没有。