質問: 私たちはLinq2Sqlから離れるにつれ、Entity Framework 6.1(NuGetから)を学びます。以下に示すような2つのテーブルを関連付ける小さなテーブルがいくつかあります。 EF6データベース第一世代 DBダイアグラム: !ここに画像の説明を入力 スキーマの概要: !ここに画像の説明を入力 ビジュアルスタジオ、空のクラスライブラリ、データベースファーストEF6 EDMXファイルを実行すると、図はTableAとTableCのみを生成します。TableBは生成されません。 !ここに画像の説明を入力 ビジュアルスタジオビュー: !ここに画像の説明を入力 TableAとTableCだけが作成されていることがわかります。技術的には、これらの参照を管理できるようにするため、TableBが作成されているはずです。 図に示されたAとCとの間の関連: !ここに画像の説明を入力 私はオプションがない、またはEntity Frameworkの重要な概念を誤解しているように感じます。不足しているTableBをT4でどのように生成するか考えていますか? EDMXファイルには表示されますが、なんらかの理由で.CSファイルに生成されず、関係を示す2つのプロパティがあります。 これが必要な主な理由は、EF6 T4テンプレートを拡張して、既存のモデルと一致する工場パターンを追加することです。それはTableBのクラスを生成しないので、私たちが探している自動生成されたコードを取得しません。 思考/提案?ありがとう。
回答: 弱いエンティティまたは結合テーブルはEFによって生成されないため、流暢なAPIまたはデータアノテーションを使用して手動で関係を設定する必要があります マイクロソフトのウェブサイトに記載されているとおり、関係の条約: > 注: `Person`クラスと`Book`クラスを定義し、 `Person`クラスに`ReviewedBooks`と`AuthoredBooks`ナビゲーションプロパティが含まれ、 `Book`クラスに`Author`と`Reviewer`ナビゲーションプロパティが含まれているとします。 Data AnnotationsまたはFluent APIを使用してリレーションシップを手動で構成します。詳細については、「データ注釈 - リレーションシップとFluent API - リレーションシップ」を参照してください。 > > 詳細については、このリンクを参照してください **更新しました** 回避策は、EDMXの場合(ただし、保守に要する費用)は次のようになります。 1. データベース内の結合テーブルから外部キーを削除する 2. データベースからEDMXを更新する 3. ジョインテーブルの外部キーを再作成する この回避策は、データベースからモデルを再度更新しない限り有効です。 推奨ソリューションは、EDMXで生成されたすべてのものを保持し、このケースではcrud操作を使用する方法の詳細については、ユーザー '@ TravisWhidden'によって「有用」と報告された次のリンクを使用してください。 1. 多対多エンティティフレームワークの挿入/更新どうすればいいのですか? 2. (動画)