0

一連の Entity Framework オブジェクトを照会し、WCF RIA サービスを介してそれらをライトスイッチに投影しています。

私のクエリでは、いくつかのテーブル間で結合を実行します。そのうちの 1 つはサマリー テーブルの詳細です。リスト内の「最初の」アイテムである詳細アイテムを特定し、列挙中に投影の現在のアイテムと比較したいと考えています。投影にある理由は、使用可能なプロパティのどれがこの特定の投影のプロパティを設定するかを変更したいからです。

これは非常に削減されたクエリです

var result = (from dataItem in (from x in Context.xs
              join y in Context.ys
              on x.property = y.property
              select new {x, y})
              .Select( (model, index) =>
                          new ObjectType 
                              { 
                                  Id = index,
                                  OneOfTwo = model.x.property,
                                  (
                                       from y in Context.ys 
                                       where y.SomeProperty == model.Property
                                       select y)
                                       .OrderBy(list=>list.Id)
                                       .FirstOrDefault()
                                       .ComparedProperty ==model.ComparedProperty
                                   ) 
                                   ? model.AnotherProperty
                                   : model.YetAnotherProerty
                              }
               );

読み取り中に Context を使用しようとしているため、DataReader エラーが発生することなく内部クエリを評価するにはどうすればよいですか?

更新:
私はいくつかの調査を行い、これは linq to sql の問題ではなく、linq to entities の問題であることに気付きました。基本的に、その操作は、サポートされていないパラメーター化されたクエリを使用するのと同じです。この状況での回避策は何ですか?

4

2 に答える 2

0

解決策は、オブジェクトをデータ転送し、linq をオブジェクトに利用するために必要な List コレクションにデータを投影することでした。次に、コレクションを WCFRIA サービスを介してライトスイッチに公開しました。

于 2012-09-25T18:15:24.943 に答える
0

LightSwitch では、プロパティがdynamicであるエンティティを使用できません。具体的なエンティティを指定する必要があるため、もちろん動的プロパティが同じタイプ(指定していないもの)でない限り、あなたが望むことはできないと思います。

于 2012-06-24T06:53:19.813 に答える