質問

んの誰もがヌル値のためのAzureテーブルストレージを照会するための適切な方法を知っています。 (開発ストレージにそれを妨げるバグがありますが)私が読んだから、それは可能です。しかし、私は生きてクラウドストレージでそうすると、次のエラーを取得しておいてください。

  

要求入力の1つが有効ではありません。

これは私が一緒に置かれていることをLINQクエリのバージョンダウン易しく書き直さです。

var query = from fooBar in fooBarSVC.CreateQuery<FooBar>("FooBars")
        where fooBar.PartitionKey == kPartitionID
            && fooBar.Code == kfooBarCode
            && fooBar.Effective_Date <= kFooBarDate.ToUniversalTime()
            && (fooBar.Termination_Date > kFooBarDate.ToUniversalTime() || fooBar.Termination_Date == null)
        select fooBar;
私はnullをチェックせずにクエリを実行する場合は、

は、それが正常に動作します。私はこのクエリを思い出させることを可能な解決策は、コレクションの2番目のクエリを実行することです知っています。私は私がする必要がある場合ということやって気にしないが、私は最初の仕事にこのアプローチを得ることができるかどうかを知りたいと思います。

誰も見明らか何も私が間違ってやってる?

役に立ちましたか?

解決

問題は、Azureテーブルストレージスキーマを持っていないため、NULL列が実際には存在しないということです。あなたのクエリが有効でないのはこのためです。テーブル記憶にNULL列のようなものはありません。あなたが本当にしなければならない場合、あなたは店のようなもの、空の文字列を行うことができます。本当に基本的な問題は、ここでのAzureテーブルストレージは本当にパーティションキーと行キー以外の任意の列で照会するように構築されていないということですが。あなたはこれらの非標準のいずれかの列にクエリを作るたびに、あなたは、テーブルスキャンを行っています。あなたが大量のデータを取得するために起動する場合は、クエリのタイムアウトの非常に高い率を持ってしようとしています。私は、クエリのこれらのタイプのためのマニュアルのインデックスを設定することをお勧め。たとえば、同じテーブルではなく、行キーに対して異なる値と同じデータを格納することができます。お使いであれば最終的には、アプリは、それはあなたがやっているクエリのタイプのためにはるかに柔軟であるように、私はちょうどSQL Azureのを使用することになり狂気高い使用率を取得されていません。

更新:Azureでは、私は読書をお勧めしますことを、テーブルのストレージ設計上の大きなガイドを持っています。 http://azure.microsoft.com/en-私たち/文書/記事/ストレージテーブル設計ガイド/

他のヒント

私はこの問題を抱えていたし、ヌルのため、実際の試験に素敵な小さな忍者トリックを達成しました。私が直接Azureストレージ・インターフェースを使用していますが、私はあなたが同じことを行うならば、それはあまりにもLINQのために働く90パーセントです。

ここで私は価格(?のInt32)がnullであるかどうかを確認するためにやったことだ。

not (Price lt 0 or Price gt 0)

私はfooBar.Termination_Dateが小さいか大きいDateTime.UtcNowよりも例えばある場合は、テストすることによって、LINQで同じことを行うことができ、あなたのケースで推測しています。このような何かます:

where fooBar.PartitionKey == kPartitionID
  && fooBar.Code == kfooBarCode
  && fooBar.Effective_Date <= kFooBarDate.ToUniversalTime()
  && (fooBar.Termination_Date > kFooBarDate.ToUniversalTime()
  || (not (fooBar.Termination_Date < DateTime.UtcNow 
            or fooBar.Termination_Date > DateTime.UtcNow))
select fooBar;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top