2009-09-21 9 views
8

に参加...テーブルA、テーブルBとTableCのLINQのテーブル私は私のデータベースでは、エンティティフレームワーク

それは本当に間の多くの関係に1を定義してTableBのは、わずか2列、テーブルAおよび表Cの主キーを持っています私はSQLを使用して何をしたいのか二つのテーブル

がある:私は参加を行うにためにEntity Frameworkので

SELECT * 
FROM TablesA a 
JOIN TablesB b ON a.AID = b.AID 
WHERE b.BID = 1 

それはTablesBを作成しませんTableBのが唯一の外部キーを持っているので、私は思います!

どうすればいいですか?あなたはTablesBのためにエンティティクラスを持っていない理由 - LINQと結合を行う

+0

http://stackoverflow.com/questions/21051612/entity-framework-join-3-tables –

答えて

7

、私は本当の問題は、かもしれないと思う

from a in TablesA 
join b in TablesB 
on a.AID equals b.AID 
into joined 
where b.BID == 1 
select joined 

非常に簡単ですか?私たちはそれに答えるためにさらに情報が必要な場合があります。

+0

I:だからすべてのあなたはサンプルのため、これらのナビゲーションプロパティを使用する必要がありますそれはTableBが外部キーで構成されているからだと思うので、それは表示されません! –

3

データベースからテーブルをインポートすると、Entity FrameworkによってTableBテーブルが削除され、TableAとTableCには多対多の関係が表示されます。 TableAにはナビゲーションプロパティTableCsがあり、その逆もあります。

var tableARow= db.TableA.First(s => s.Id == 1); 
if (!tableARow.TableCs.IsLoaded) { tableARow.TableCs.Load(); } 

または

var tableARow= db.TableA.Include("TableCs").First(s => s.Id == 1); 
+0

ありがとう、それはもっとそれのように見えます。たったひとつ。 s.Id == 1の場合、実際はTableCのIDで、TableAではなく1に設定する必要があります。どうすればいい?だから私は戻って欲しいTableAエンティティですが、TableC.ID = 1を持つTableCを記入したいと思います....意味がありますか? –

+0

テーブルAの行のうち、Id = 1のテーブルCの行を持つ行のリスト: var tablearows = db.TableC.Include( "TableAs")ここで(c => c.Cid == 1).Select( c => c.TableAs).ToList(); – Puzzled

関連する問題