5
LINQPadを使用してローカルCRM組織のODATAサービスに接続していますが、LINQPadを使用して「結合」を実行する方法や関係をトラバースする方法がわかりません。LinqPadでODATA展開を実行する方法
は、ここに私のURLのブラウザで正常に動作します
OrganizationData.svc/New_locationSet?$select=new_state_new_location/new_Region$expand=new_state_new_location
です。ここで私はLINQPadでやっているものです:
from l in new_locationSet
from s in l.new_state_new_location
select s.new_Region
を私はエラーになっています:
An expression of type 'LINQPad.User.New_state' is not allowed in a subsequent from clause in a query expression with source type 'System.Data.Services.Client.DataServiceQuery<LINQPad.User.New_location>'. Type inference failed in the call to 'SelectMany'.
任意のアイデア?私はあなたがちょうどあなたが例えば、展開したいものを投影する必要があります... LINQPadのODataのドキュメントが非常に不足し
基本的に、odataには単一のデータセットがあります。つまり、Odata.svc/Products()Categories()を実行することはできませんか... ...)、LINQクエリを単一の"from"データセットを選択し、投影を選択します。 odataにはすでにすべての関係が定義されているため、自動的に接続されます。 – Daryl
ええ - それはかなり大丈夫です。 URLにはジョインはありません(ナビゲーションプロパティがあれば必要ないため)ので、クライアントサイドのLINQ to URLトランスレータはこれらのことについて非常に賢明にしようとしますが、ジョインをナビゲーションと認識するかもしれませんが、現在は非常に限られています(主に外部キーを知らない、または持っていないため)。 ODataをオブジェクトのグラフとして想像し、そのグラフ内で返すツリーを定義します。これは、テーブルを持ち、クエリが行列を定義するリレーショナルデータベースとはまったく異なります。 –