LINQ

2016-03-31 4 views
0

を使用して複数のテーブルからデータをフェッチiが3つのテーブル、A、BおよびCは以下のような関係があります:私は、結果をフィルタリングしたかっLINQ

A OTO B及びB OTM C.

をB + "を使用してCテーブルのいくつかの列。 (== 0 B.Blob.IsDeleted)が、私は以下のエラーメッセージ

を取得「を含むパス式は、ナビゲーションプロパティを参照する必要があり タイプに定義された。参照ナビゲーションのための点線の経路を使用 特性とコレクションのナビゲーションのための演算子を選択し プロパティ複数のテーブルからクエリを実行するには、 『キー病棟への参加」

それは、このアプローチを使用するか、私が使用していることをすることは可能ですか』?

ありがとうございました。

+1

これは間違った質問です。 EFはテーブルではなく*エンティティを扱います。 3つのエンティティが関連している場合、それらの関係をマッピングで定義する必要があります。ルートエンティティをロードするこの方法は、*すべての関連エンティティをロードします。ジョインを探す必要がある場合は、関係がないことを示す記号です。 –

+0

実体はテーブルを表すため、申し訳ありません。私は3つのエンティティ(私は上記のように)ヒーブ、私はちょうど3つのエンティティすべての異なるフィルタを持つすべての3つのエンティティからデータをフェッチしたい。 – user1630359

+0

私は、a *、b *、b *、b *、b *、b * Entity FrameworkとLINQを使用して – user1630359

答えて

0

Include機能のみプリフェッチInclude DエンティティにEFを伝え、これは、複数の関連テーブルからのデータを結合するクエリを実行することと同じではありません。

したがって、次のコード:

myContext.TableA.Include("B").First(); 

これはまた、ナビゲーションプロパティ「B」で指されたエンティティをロードするために、エンティティフレームワークに指示します。 Join()クエリと全く同じことではありませんが、非常に似たような事実があります。

エンティティAをいくつかの条件でフェッチする必要がある場合、AからB、B→Cのナビゲーションプロパティを使用してAに関連するすべてのエンティティをフェッチする必要がある場合は、これが有効です。

異なるプロパティ(フィールド)で結合するなど、より複雑な処理を行う場合は、BまたはCのプロパティに基づいてAをクエリします。 Include関数は機能しません。

+0

3つのエンティティのすべてのフィールドのいくつかのフィルタに従ってデータをフェッチしたいだけです。もし私がSQLクエリを使用すると、それは... select * from a、ここでの結果は、3つのテーブルすべてでフィルタリングした後です。今はEntity FrameworkとLINQを使って同じことをしたい – user1630359