2016-05-03 5 views
1

私は条件付きエンティティの範囲を選択Azureテーブルストレージへのクエリ送信しています:私はすべて完了していない(「真」のne完了)のいずれかの範囲内のレコードまたは完全な後が必要Azureテーブルストレージフィルタのバグ?

$filter= 
(PartitionKey eq 'key') 
and 
(
    (
     (RowKey gt '08D372E4E0A02B2600000000') 
     and 
     (RowKey le '08D372E4E515E3E9FFFFFFFF') 
    ) 
    and 
    (
     (Done ne 'true') 
     or 
     (EndTimestamp gt '635978299756075046') 
    ) 
) 

を(EndTimestamp gt '635978299756075046')。完了は 'ブールですか?' EndTimestampは 'Int64?'です。

はフィドラーでは私はこのようなレコードが戻されることをはっきりと見ることができます。

{ 
    "PartitionKey":"key", 
    "RowKey":"08D372E4E0A0B8F5002CDBE3", 
    "Done":true, 
    "[email protected]":"Edm.Int64", 
    "EndTimestamp":"635978299737021249", 
} 

は何EndTimestamp条件を満たしていない:6359782997 が明らか未満6359782997 です。

バグのようですか、何か不足していますか?

回避策として、実行時に追加のチェックを行うことはできますが、(1)サーバー側でフィルタリングする目的に反する(2)トラフィックとクエリの数を減らしたい - 何千ものエンティティ条件を満たさない

答えて

1

問題が見つかりました。それは私の間違いでした。 右の条件は次のとおりです。

(Done ne true) 
    or 
    (EndTimestamp gt 635978299756075046L) 

私は文字列のみにかかるので、それは値に引用符を追加しTableQuery.GenerateFilterConditionヘルパーメソッドを使用します。