2

私はいくつかの外部Webサービスから情報を取得するためにAzureワーカーロールを設定し、これらのエンティティをAzureテーブルストレージに格納します。重要なのは、これらのエンティティのすべてではないにしても、ほとんどがそれぞれがテーブル内の独自のパーティションに挿入されている場合です。エンティティを複数のAzureテーブルストレージパーティション(同じテーブル)に挿入し、いずれかの挿入が失敗した場合にはそれを知ります

私はTableServiceContext拡張クラスを使用して、AddObject(EntityToBeInserted)を呼び出して、新しいエンティティをテーブルの作成時にテーブルのコンテキストに添付します。現在、私はTableServiceContext.SaveChangesWithRetries(SaveChangesOptions.None)を呼び出して、これらのエンティティをそれぞれのパーティションのテーブルに保存します。これはすべて正常に動作します。

私の質問です:うまくいかないとどうなりますか?私はエンティティの1つ以上が一意ではない行とパーティションキーを作成することで保存されないようにすることができますが、その動作の周囲にキャッチするエラーメッセージは、エンティティのいずれが失敗したかを示しません。それらの中の一つ。

各エンティティが独自のパーティションに移動するワーカーロールからエンティティをテーブルストレージに保存する方法(これらのセーブコールの1つに2〜30個のエンティティが挿入されていることを前提とします)私はそれがどれだったかを少なくとも知ることができるでしょうか?これらの操作は非常に時間が掛かります。残念ながら、長時間実行されるRetryオプションを使用して、関連するストレージノードが再び利用可能になるのを待つことはできません。

は、答えはあなたがテーブルのストレージ・パーティション間で一括挿入を行うことはできませんので、あなたが挿入したエンティティのIDS(のPartitionKeyとのrowKey)を追跡し、中に彼らの成功を確認する必要があり、 アレックス

+0

答えは、パーティション間で大量の挿入を行うことができないため、処理のために送信するエンティティのids(パーティションキーと行キー)を追跡し、それぞれのトランザクションが完了したことを確認することです非同期保存コールバック – user483679

答えて

0

をありがとう非同期テーブルストレージインサートコールのコールバック

関連する問題