0

Windows フォームから OData を使用しようとしています。それで、私が今行ったことは、新しいプロジェクトを作成することです。OData サービスへの Web サービス参照を追加し、それを使用しようとしました。

私のコードは次のとおりです。

var VistaEntities = new VrExternalEntities("serviceURI");
var query = VistaEntities.VRtblCinemaType
            .Where(
                     x => 
                     x.VRtblCinema_Operators
                          .Any
                          (
                              z => 
                              z.VRtblSessions
                              .Any
                              (
                                   y => 
                                   y.Session_dtmDate_Time > DateTime.Now
                              )
                          )
                   )
             .Select
             (
                 x => 
                 new 
                 {
                     x.CinType_strCode, 
                     x.CinType_strDescription 
                 }
             );

Where句を削除すると機能します。私が行うと、Anyはサポートされていないと表示されます。MaxProtocolVersion を V3 に設定する必要があることはわかっていますが、その方法がわかりません。エンティティ コンテキストなどはありません。私が持っているのは、上で述べたものだけです。

それを達成する方法の手順を提供してください。

前もって感謝します。

ヤニス

4

1 に答える 1

2

の構成を取得し、その動作を にDataService設定する必要があります。MaxProtocolVersionV3

これを行うのに最適な場所は、サービス クラスで定義できるInitializeServiceconfig静的メソッドです。このメソッドには、環境によってパラメーターとして適切な構成オブジェクトが与えられます。通常は最初のリクエストで一度だけ呼び出されます。

注 #1: WCF Data Services 5.0以降 が必要です。これを取得する最善の方法は、おそらくNuGetパッケージを使用することです。Server

注 #2: 奇妙なことに、DataServiceProtocolVersion型はCommon名前空間にありますが、クライアント アセンブリ ( NuGetパッケージMicrosoft.Data.Services.Clientによって提供される) に含まれています。ここでより良い組織を提案しました。Client

public class Vista : DataService<VistaContext>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule(...);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        ...
    }
}

更新:クライアントは、 HTTP ヘッダーを使用して、要求で目的のバージョンを 実際に指定できます。明らかな理由から、可能な場合はおよびヘッダーDataServiceVersionを使用して、さまざまなバージョンを指定およびサポートすることを現在お勧めします。ただし、はOData 4.0で削除されることに注意してください(パート 1 の付録 E.1 および「What's new」ドキュメント ドラフトを参照)。MinDataServiceVersionMaxDataServiceVersionMinDataServiceVersion

WCF Data Services 5.x 実装の関連ドキュメントは、こちらから入手できます。クライアント固有のドキュメントはかなり不足しているようですが、参考文献を見ると、DataServiceContextにこのコンストラクターを使用して最大プロトコル バージョンを指定する必要があることがわかります。新しいコンテキストを再構築します。ヘッダーを直接いじろうとするかもしれませんが、確実に (またはまったく) 動作するとは思いません。

したがって、あなたの質問に答えるには、クライアントのコンテキストを作成する方法を制御する必要があります。

于 2013-08-06T15:57:48.200 に答える