2011-02-07 8 views
0

私は多くの関係に多くのためのDBで3つのテーブルがあるとします。EFでN-N関係を処理する方法は?

タバ(ID1、...):主キー:ID1

TABB(ID2、...):主キー:ID2を

TabAB(ID1、ID2、...):外部キー:ID1、ID2

だから、ときTabABは何の主を持っていないので、私は唯一のモデルで2つのエンティティTABAとTABBを取得し、DBからVS 2010でEDMX作成キー。

このケースをEFで処理するにはどうすればよいですか?

答えて

1

EFはTabABを関係に変えただけではありませんか?他の列がない場合は、モデルの表として表示されません。 EABはTabABが結合テーブルであると判断し、それに応じて処理します。

もしそうでなければ、Tababを変更して複合主キーがid1id2になるようにするのが最善の方法です。値の組み合わせが固有ではない何らかの理由がある場合は、その理由を調べると良いかもしれません。

+0

私が試したとき、TabAB(id1、id2)には他の列はなく、モデルにも表示されませんでした。だから、うまくいくはずですよね? – KentZhou

+0

@KentZhouこの場合、TabAとTabBの間に関係があり、TabAとTabBのエンティティ表現はそれぞれ、他のテーブルに対して「ナビゲーションプロパティ」を持ちます。 Visual Studioでダイアグラムを表示している場合は、TabAとTabBを結ぶ線をクリックし、[マッピングの詳細]タブに移動します。 "Association to" Tababにマップする "Association"があり、2つの異なるプライマリキーが表示されていることがわかったら、あなたは大丈夫だと思います。 – Andrew

0

一般的な方法は、EFで多対多の関係を処理することです。記憶域には3つのテーブルを持ち、概念モデルには2つのテーブルしか持たないようにします。ストレージ内の第3のテーブルは、主テーブルを参照する外部キーを表す列を含み、中間テーブルの主キーはこれらの参照列上に構築される。デザイナーはそれを隠すだけです:)

ここをクリックしてください。http://weblogs.asp.net/zeeshanhirani/archive/2008/08/21/many-to-many-mappings-in-entity-framework.aspx

関連する問題