2011-12-15 1 views
2

RIAサービスで1..0のデータを取得できます。RIAサービスで0..1のようなデータを関連付けることは可能ですか?

var sFiltered = this.ObjectContext.Sequences.Include("Schedules").Include("Events") 
            .Include("Events.EventFrames") 
            .Include("Events.EventRules") 
            .Include("Events.EventFrames.EventFramePlugins") 
            .Include("Events.EventFrames.EventFramePlugins.EventFramePluginParameters") 
            .Include("Events.EventFrames.EventFramePlugins.EventFramePluginContentItems") 
            .Where(s => s.ID == schedule.SequenceID).FirstOrDefault(); 

したがって、上記のコードは素晴らしい作品。

問題は、私は[ClientContentItemElements]

から[EventFramePlugins] ClientContentItemIDしてデータを取得したい下の画像を見てくださいということです。しかし、私がしたくないことは、このデータを取得するためにWPFクライアントからの1つの追加要求を使用することです。したがって、私は必要なすべてのデータを取得するために1つのリクエストを使用します。

DB Model

ありがとう!!!

答えて

0

次のクエリは、望ましい結果を返すと思います。最後に匿名タイプ(ClientContentItemElementIdSequence)を選択して、適切な結果を得ることができます。しかし、私は、このアプローチがまったく受け入れられるかどうかを確認するために、生成されたSQLをテストしませんでした。

sequences.Include.....Where(s => s.ID == schedule.SequenceID).SelectMany(s => s.Events).SelectMany(e => e.EventFrames).SelectMany(ef => ef.EventFramePlugins) 
    .SelectMany(efp => efp.EventFramePluginContents).SelectMany(efpc => efpc.ClientContentItems). 
    SelectMany(cci => cci.ClientContentItemElemts).Where(ccie => ccie.ClientContentItemElementId == myValue). 
    Select(
     ccie => 
     new 
      { 
       ccie, 
       ccie.ClientContentItem.EventFramePluginContentItem.EventFramePlugin.EventFrame.Event. 
      Sequence 
      }); 
+0

こんにちは!手がかりをありがとう!しかし、あなたのアプローチでは、私は緩んでいます.Include( "Events.EventRules")と私はあなたが示唆したように "myValue"を持っていません。私はそれを使用することはできません。とにかくありがとうございました! –

+0

@DmitryBoyko:そうだね。 1つのDBコールですべてのことを行うことが可能かどうかを知ることは興味深い。あなたが解決策を見つけたら、それを分かち合うと感謝します。 – Kamyar

+1

まあ...私は、RIA ServicesでいくつかのView Classを作成し、古典的なLINQアプローチを使ってそれを作成することに決めました。 –

関連する問題