私は辞書を使用できるアプリケーションを開発しています(英語 - ドイツ語や国 - 首都など)。わずか2非常に通常のテーブルがあります。Azureテーブルストレージのエンティティを削除する
1)辞書:
int Id, string Title //PartitionKey="SomeConstString", Rowkey=Id.ToString()
2)記事:
int DictionaryId, string Word, string Meaning //PartitionKey="D" + DictionaryID, Rowkey=Word
は私が記事を追加することができますが、私は次のような問題を取得し、削除しようとすると:すべての辞書で、1つまたは2つの記事は削除されません。代わりに、私はResourceNotFoundExceptionを取得します。これらの記事(ロシア - モスクワなど)については何も特別なことはありません。同じPartitionKeyとRowKeyを持つ記事を追加しようとすると、EntityAlreadyExistsExceptionが発生します。私は "Cloud Storage Studio"をインストールし、それらのエンティティが実際にはまだテーブルに入っていることを知りました。私はそれらを手動で削除しようとしましたが、コードで取得していたストレージスタジオで同じResourceNotFoundExceptionを取得しました。だから私は100の記事を追加し、それらを(コードやCtrl + A - >削除のようなスタジオで)削除しようとすると、99(または時には98)は削除され、他はされません。私は開発ストレージエミュレータを使用しています。ここでは(私は結果はまだ同じで、異なるアプローチを試してみました)私は記事を削除する方法です:
public void DeleteAllArticlesFromDictionary(int dictionaryID) {
TableServiceContext tableServiceContext = tableClient.GetDataServiceContext();
string partitionKey = "D" + dictionaryID;
Article[] articles = tableServiceContext.CreateQuery<Article>(articleTableName).Where(a => a.PartitionKey == partitionKey).ToArray();
for (int i = 0; i<articles.Length; ++i)
tableServiceContext.DeleteObject(articles[i]);
tableServiceContext.SaveChanges();
}
誰もが、おそらくこれで間違っていることができるかを教えてもらえますか? UPD:クラウドでうまく動作します
削除しないPartitionKey/RowKeyコンボの具体例を挙げることができますか?常に同じ行やキーに問題があるのですか、時には異なる行ですか? –
msdnに掲載された同じ質問にスクリーンショットといくつかの追加説明が添付されました。リンク:http://social.msdn.microsoft.com/Forums/en-EN/windowsazuredata/thread/11f53d7f-dcb8-40bd-a372-65d90970a056 –
これは本当に変です。おそらくあなたのdevstorageはちょうど奇妙な状態になったでしょうか?テーブルを削除してから再作成し、同じ動作をするかどうかを確認してください。 –