2011-12-06 21 views
3

テーブルを複数のテーブルに結合するにはどうすればいいですか?このようなものは、我々は簡単に、あなたはちょうどあなたがSQLでやるだろうと同じように参加するスタック、EF4 2つ以上のテーブルにテーブルを結合する方法

+0

が、このページの最後の例を参照してください:http://msdn.microsoft.com/en-us/library/bb896266.aspx – kol

+0

はい、それは2つのテーブル間の結合をする方法を示し、およびMSDNにも例が2に参加すること他の1つのテーブルにのみ表示されます。 "INNER JOIN Person.BusinessEntityContact AS b ON e.BusinessEntityID = b.BusinessEntityID AND p.BusinessEntityID = b.PersonID"のような他の2つのテーブルと結合する必要があります。 – Bhuvan

+2

この回答を見る:http://stackoverflow.com/questions/1264993/linq-left-join-on-multiple-or-conditionsであるか、基本的には新しいオブジェクトを比較のために使用する '新しいPerson.BusinessEntityContactのPerson.BusinessEntityContactのjoin bはnew {e.BusinessEntityID、p.BusinessEntityID} = new {b.BusinessEntityID 、b.PersonID} ' –

答えて

2

一般的に、事前にSQL

SELECT p.* FROM Person.BusinessEntity AS e 
INNER JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID 
AND e.BusinessEntityID = p.BusinessEntityID INNER JOIN Person.BusinessEntityContact AS b 
ON e.BusinessEntityID = b.BusinessEntityID AND p.BusinessEntityID = b.PersonID 

おかげで行うことができます。元の質問が少し明確になっていることがわかりました。コンポジットキー結合は、コンポジットキーとのスタッキングジョインの組み合わせになるため、必要になりそうです。 Gary.Sは、元の質問に対する彼のコメントの複合キー部分の正しい構文を指摘しましたが、ここでは同じ複合キーの選択を含むように答えています。通常のためにあなたが

join … in … on … equals … 

を使用し、複合キーのためにあなたが両方のエンティティからすべてのキー列を含むように匿名型を使用して参加します。ここで

あなたはまた、あなたはLINQで左外部結合を行うために必要なGroupJoin、見てする必要があるかもしれません

var items = from e in Person.BusinessEntity 
     join p in Person.Person on 
      e.BusinessEntityID equals p.BusinessEntityID 
     join b in Person.BusinessEntityContact on 
      new {e.BusinessEntityID, p.BusinessEntityID} equals 
      new { b.BusinessEntityID, b.PersonID} 
     select p; 

探しているものであるべきである例です。ほとんどの例良い例が101 samples page

1

思考の学校はあなたのエンティティフレームワークモデルを作成した場合、正しく、あなたはshouldnことがあるで発見することができます

join … in … on … equals … into … 

グループは次のようになります参加しますあなたのクエリでは、結合を全く使わなくてはなりません。すべてのご加入は、実際にはおそらく、ナビゲーションプロパティ(私は、クエリからのPersonスキーマを取り出しました)すなわち

BusinessEntity.Person.Where(x => x == yourID) 

またはより明確に

Entity1.Entity2.Where(x => x == yourID) 

なく、私のオリジナルのアイデアでなければなりません - ジュリー・ラーマンはそれで言います彼女EF book

関連する問題