我已经阅读了所有可以找到的Azure Service Fabric文章,但我仍然无法理解您应该如何处理存储在“状态服务”中的数据--除了按键获取数据之外。
比方说,我有一个Team和一个Player对象。它们存储在IReliableDictionaries中,包含密钥team-1、team-2和player-1、player-2等。
每个Player对象都有一个Player.team值,该值是对Team的引用。
现在..。假设我想获得所有存储的Player对象,这些对象的Player.team等于team-2。我该怎么做?我必须手动遍历我的所有对象并找到我自己吗?当您获取数据时,不应该有过滤器函数吗?
发布于 2016-10-06 13:46:43
您可以使用CreateEnumerableAsync和GetAsyncEnumerator循环数据。小心使用,如果您的字典很大,这可能需要一些时间。而且这也不是一个有效的方法来搜索一个集合。(反对使用钥匙)
您还可以存储从一个球员到另一个团队和从一个团队到另一个球员的引用。在一个ReliableDictionaries中修改两个事务以保持它们的同步。通过这种方式,你可以在没有循环的情况下找到一名球员的球队和一支球队的球员。确保您的状态对象保持不变,如链接文章中所示。
您还可以保存第三个字典,该字典保存团队和玩家对象之间的所有引用,因此,如果有许多引用,则不会使对象模型过于混乱。
最后,如果需要查询大量关系数据,可以使用像Server这样的外部存储。
https://stackoverflow.com/questions/39894297
复制相似问题