2016-10-06 3 views
0

私が見つけることができるすべてのAzureサービスファブリックの記事を読んだことがありますが、ステートフルサービスに格納されているデータ(キーでフェッチすることを除く)。Keyを使用する以外の方法でステートフルサービスのデータを検索する方法

など。 TeamPlayerというオブジェクトがあるとします。彼らは、player-2

PlayerオブジェクトはTeamへの参照であるPlayer.team値を有し、キーteam-1team-2player-1IReliableDictionariesに格納されています。

今すぐ... を持つオブジェクトがすべてPlayerに保存されるようにしたいとしましょう。team-2です。これはどうすればいいですか?手動ですべてのオブジェクトをループして自分自身を見つけなければならないのですか?データを取得するときにフィルタ関数を使用しないでください。

答えて

2

CreateEnumerableAsyncGetAsyncEnumeratorを使用してデータをループすることができます。慎重に使用すると、辞書が大きい場合には時間がかかることがあります。コレクションを効率的に検索する方法ではありません。 (鍵の使用に反対)

また、PlayerからTeamへ、およびTeamからPlayerへの参照を格納することもできます。それらを同期させるためにTransactionの中にReliableDictionariesの両方を修正してください。このようにして、ループしないでチームのプレーヤーとプレーヤーのチームを見つけることができます。リンクされた記事に示すように、Stateオブジェクトを不変に保つようにしてください。

TeamオブジェクトとPlayerオブジェクト間のすべての参照を保持する3番目の辞書を保持することもできます。したがって、参照が多数ある場合はオブジェクトモデルをあまり乱雑にしないでください。

最後に、多くのリレーショナルデータをクエリする必要がある場合は、SQL Serverのような外部ストアを使用できます。

関連する問題