2012-03-19 43 views
0

私は辞書を使用できるアプリケーションを開発しています(英語 - ドイツ語や国 - 首都など)。わずか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:クラウドでうまく動作します

+0

削除しないPartitionKey/RowKeyコンボの具体例を挙げることができますか?常に同じ行やキーに問題があるのですか、時には異なる行ですか? –

+0

msdnに掲載された同じ質問にスクリーンショットといくつかの追加説明が添付されました。リンク:http://social.msdn.microsoft.com/Forums/en-EN/windowsazuredata/thread/11f53d7f-dcb8-40bd-a372-65d90970a056 –

+0

これは本当に変です。おそらくあなたのdevstorageはちょうど奇妙な状態になったでしょうか?テーブルを削除してから再作成し、同じ動作をするかどうかを確認してください。 –

答えて

0

私はこの問題を発見したと思いますが、RowKeyという単語の最後にスペース文字(0x20、 '')がありました。だからそれは 'RowKey1'と言いました。私はスペースを取り除いたが、今はすべてdevstorageでも問題ない(実際の環境では問題はなかった)。しかし、スペースがキー内部で正しく扱われることは混乱しています( 'Row Key 1'はエラーなしで使用できます)が、末尾の文字がある場合やそのような動作を引き起こします。私は 'Key Fieldsで禁止されているCharacters'について読んだことがあるが、そこにスペースは記載されていない。私はキーとして使用する前に私の文字列にTrim()を使うべきだと思います。

関連する問題