0

Azure Table Storage に保存されている TableServiceObject から派生した .NET 型 ("Person" と呼びます) が別のエンティティ ("events") のコレクションを持つアプリケーションを使用しています。もちろん、コレクション プロパティは Azure Table Storage に保存されません。

私がやりたいことは、Person ストレージ エンティティに可変数のプロパティを設定し、必要に応じて新しいプロパティを作成することです。たとえば、Person1 が以前に 1 つのイベントに参加し、新しいイベントに参加した場合、私のコードでは、Person1 エンティティの "Event2" プロパティを作成し、そのプロパティの Event2 の格納場所へのポインターを保存する必要があります。Person1 には 2 つの「イベント」プロパティがありますが、そのテーブル内の別のエンティティには 10 個のプロパティ (event1、event2、event3 ... event10) がある場合があります。

Person クラスは、クラス内のすべてのパブリック プロパティのプロパティを自動的に作成する Azure テーブルに直接マップされるため、クラスに永続的なプロパティを作成せずに、この保存されたエンティティに Event2 プロパティを動的に追加する方法を見つけることができません。 、やりたくない。方法はありますか?

この「ぎざぎざの」一連のプロパティを保存する目的は、イベントが保存されているパーティション全体をスキャンしなくても、人が行ったすべてのイベントを取得できるようにすることです。

ありがとう!

更新: Smarx は正しかった - 何を探すべきかがわかれば、Azure Table Service で ReadingEntity および WritingEntity イベントを使用する方法に関する次の説明を簡単に見つけることができました: http://convective.wordpress.com/2009/12/ 30/entities-in-azure-tables/

4

1 に答える 1

1

テーブル内のエンティティへのクラスのマッピングについて言及したため、.NETを使用していると思います。テーブル ストレージ自体にはスキーマがないため、これはまったく問題ではありません。

スキーマを使用せずに WCF Data Services クライアント ライブラリ (Microsoft.WindowsAzure.Storage の下にあるもの) を使用するのは少し注意が必要です。テーブル ストレージを検索しReadingEntityWritingEntity関連付けると、おそらく必要なものが見つかるでしょう。基本的に、これらのイベントをフックし、必要な追加のプロパティを解析 (または挿入) する必要があります。通常、これらの「余分な」プロパティを処理するディクショナリ プロパティを作成し、それらのイベントが発生したときに読み書きします。

http://www.lucifure.com/もチェックしてみてください。これは、私が経験したことのない別のクライアント ライブラリです。この制限にも対処していると思います。「辞書を介した動的スタッシング。したがって、すべてのテーブル プロパティをクラス メンバーにマップする必要はありません。」

于 2012-07-23T23:07:33.820 に答える