2011-07-05 11 views
0

私のアプリケーションの管理者は、userprofilesの追加のプロパティを作成できます。したがって、UserAには1つの携帯電話番号を割り当てることができ、UserBには5を割り当てることができます。または、UserAにはクレジットカード番号を割り当てることができます。nullのプロパティを無視するAzureテーブルのストレージ

私はAzure Table Storageでこの機能を使いたいと思っています。私はジェネリックエンティティを作成し、テーブルストレージに挿入しています。

すべてのエンティティ/行には、プロパティ(パーティションキー、行キー、タイムスタンプ、および独自のプロパティ)が255個しかありません。私の状況では、列数は増えますが、 1ユーザーは実際に255のプロパティを使用します。

ここで問題は、ユーザーがエンティティを読み取ったときに、使用しない他のすべてのプロパティが'm:null="true'になります。

ご覧のとおり、彼はまだ彼が必要としない追加のプロパティを取ります。 もちろん、私のReadingEntityイベントでそれらを無視することはできますが、それでもオーバーヘッドの権利はありますか? 100人のユーザーのプロファイルを取得したいとし、500の列が好きだとします。 xmlファイル&のネットワークトラフィックには、無駄なデータがたくさんあります。

これらのヌルを無視して戻す方法はありますか?それらを戻して、列をヌルとしてマークする代わりに?あなたは、エンティティを保存しているときに、あなたにも(ヌル値で)これらの追加のプロパティを保存している

enter image description here

+0

2つのテーブルにそれを分割したいのですが? 1つはマスター(すなわち個人)レコード用で、もう1つは詳細(電話番号、住所など)用です。人のリストを照会するとき(常にそうでない可能性がある)、すべての詳細を常に必要としない限り、不必要なオーバーヘッド(およびコスト)が発生しています。 –

答えて

3

あなたは開発ストレージを使用していますか? 実際のクラウドストレージ... devストレージは実際のスキーマを保存します。 しようとしているものに他のエンティティのプロパティを適用している可能性があります。 - smarx 7月5日17時28分

でこれだっソリューションおそらく

2

?クラウドストレージに関する限り、エンティティを保存している間に属性を指定しないと、エンティティを取得するときにその属性を返すことはありません。しかし、開発ストレージでの作業は、すべて別のストーリーです。 3つのカスタム属性を持つエンティティと5つのカスタム属性を持つ別のエンティティを保存した場合、エンティティをフェッチすると、すべての属性が戻されます。

+0

私は言ったような通常のエンティティとは連携していません。私は単純/ジェネリック型で作業しています。 参照: http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/f57cb566-cc7a-4b31-b1ab-47b6d16604af/ 属性を使用して辞書に記入することができます。タイプ。だから私は私のエンティティを保存するとき、私は他の属性を記入しないでください:) –

+1

そしてあなたは開発ストレージを使用していますか?本当のクラウドストレージに対してこれを試してみてください... devストレージは実際のスキーマを保存し、あなたが読もうとしているものに他のエンティティのプロパティを適用しているかもしれません。 – smarx

+0

ありがとうsmarx!私はそれを実際のクラウドストレージに対してテストしましたが、これはnull値を返しません。私は開発ストレージを使用しているときに私のreadingEntitiesに余分なチェックを入れます。 開発ストレージを使用する際に遭遇する可能性のある他の既知の「難しさ」がありますか? –

1

戻ってきたヌルが表示される唯一の方法は、最初にそれらを保存した場合です。ジェネリックエンティティ永続性コードまたはジェネリックエンティティ自体を再度確認します。保存するためにヌル値が送信されている必要があります。テーブル記憶域にはスキーマがないので、それがわからないフィールドの値を送ることは不可能です。フィドラーはセーブで確実にあなたを表示します。

関連する問題