2

プロパティの動的リストを、Azureテーブルに既に保存されているものにマージする必要があります。私の調査によると、「挿入またはマージ」を使用した「アップサート」が正しいアプローチです。

  • プロパティの動的リストを保存できるようにC#言語を取得するにはどうすればよいですか?

  • これを実現する唯一の方法は、生のXML編集ですか?


UpsertとInsertOrMergeの詳細については、こちらをご覧ください。


私の特定の問題に関する追加の詳細

オブジェクトを使用して、Entity基本的にNの長さの配列を追跡しています。ここでN <240(255はAzureテーブルで使用可能なプロパティの最大数です)。配列内の各位置は、次のようなプロパティ名に対応しています。

 /* Note: Each number is prefixed by "a" since properties can't start with a number and I like it when all properties have the same length */

public class MyFatEntity
{

public string A01 {get;set;}

public string A02 {get;set;}

// ..

public string A10 {get;set;}

// ..

public string AF0 {get;set;}

}

文字列を配列の特定の位置と照合する機能が必要です。これでプロジェクションを使う予定です。

私が予測する問題の1つは、240のプロパティを持つ大きなファットオブジェクトを作成すると、ストレージ帯域幅を消費し、存在する必要のない非効率性を生み出すことです。

言うまでもなく、これらの追加のプロパティは、たとえnullであっても、私の最大エンティティサイズにカウントされます。本質的なオーバーヘッドは、より長いレコードのためにデータを保存する余地が少なくなることを意味するため、これは望ましくありません。

4

1 に答える 1

0

CodePlex および NuGet 経由で利用できるオープン ソース クライアントの Lucifure Stash を作成しました。これにより、列ごとに 1 つの配列要素で Azure Table Storage に配列を永続化できます。

Lucifure Stash は、ディクショナリを介した動的プロパティもサポートしており、「挿入マージ」に最適です。(コードプレックス)

サポートされていないのは、個々の配列要素に対してクエリを実行する機能です。クエリがタイトなパーティションおよび/または行キー範囲によってバインドされていない限り、非キー要素に対するクエリは非効率になる可能性があることに注意してください。

于 2012-09-06T00:04:35.853 に答える