2012-04-25 9 views
1

現在、Netflix OData APIを使用している小さなプロトタイプを作成しています。エンティティを熱心に読み込んでいきたいです。言い換えれば、プロパティを具体的に「展開」したくないということです。むしろ、エンティティがフェッチされたときに、特定のエンティティのすべてのプロパティをロードするだけです。私はここでデザインや建築アドバイスを求めていません。私はこれをすることの意義を知っています。コンテキストレベルで熱心な読み込みを有効にする方法はありますか?ODataで熱心にロード

おかげ

+0

私の知る限りでは、これは不可能です。私は元々の議論の一部ではありませんでしたが、もしあれば、熱心に負荷をかけているサービスをDoSにいかに簡単にするかが中心になりそうです。 URLリライティングを使用して、すべてのクエリに$ expandを追加することができます。 https://data.uservoice.com/forums/72027-wcf-data-services-feature-suggestionsで機能リクエストを追加し、重要だと思われる人に投票させることをおすすめします。 –

答えて

2

マークは、上述したように、これは、WCF Data Servicesの任意のビルトイン機能で、現在は不可能です。いくつかのコードを使って$ expandをクライアントのURLに挿入すると、明示的に行う必要がないように見えます。

いくつかの一般的な解決策で問題がある:

  • はこれをオンにするアプリケーションは、それを必要としない場合でも、大量のデータを送信するであろう。
  • これは何レベルですか?ちょうど1つ、2つ、または多く。エンティティグラフにサイクルが存在する可能性があるため、無限にすることはできません。

クライアント側のクラスを変更して、アクセス時にプロパティを遅延ロードすることもできます。 API DataServiceContext.LoadPropertyがありますので、適切な場所で呼び出してください。

+0

私はそれが事実だと恐れていたが、私は理由を理解している。私はこのDataServiceContext.LoadPropertyを試しているか、簡単に.Expand( "Entity/Property")を熱心に読み込む必要があります。理想的ではありませんが、現在はうまくいきます – Buzzer

関連する問題