0

私は.Net 4.5、エンティティフレームワーク5、データベースを最初に使用しています。データベースにジャンクション (多対多) テーブルがあります。この例では、テーブルが「StudentsCourses」であるとしましょう:

Students
  -PkStudentId
  -Name

Courses
  -PkCourseId
  -CourseNumber

StudentsCourses
  -FkStudentId
  -FkCourseId

これは今のところうまく機能します。「データベースからモデルを生成」は、Course エンティティへのナビゲーション プロパティを持つ Student エンティティを作成します。しかし、ここで問題が発生します。

StudentsCourses テーブルに別の列を追加する必要があります。この列を「CourseYear」と呼びましょう。したがって、ジャンクション テーブルは次のようになります。

StudentsCourses
  -FkStudentId
  -FkCourseId
  -CourseYear

そのため、この列をデータベースに追加し、edmx で「データベースからモデルを更新」を実行しました。StudentCourses 用に作成されたエンティティが、Students と Courses の両方へのナビゲーション プロパティを持つことを期待しています。しかし、そのようなエンティティは作成されません。以前と同じナビゲーション プロパティを持つ同じ 2 つのテーブル (Students & Courses) が表示されます。

私は多くの読書と研究を行ってきましたが、明確な答えに出くわしていません. 私のシナリオには当てはまらないコード ファーストに関する情報が豊富にあります。私が求めているものを手に入れる方法はありますか?StudentCourses テーブルに PkId を追加するのと同じくらい簡単ですか? SQL レプリケーションが原因で、これを行うことができません。コンポジットで十分だと思いますが、EFには魔法を行うためにPKが必要なのでしょうか? 関係を手動で設定する方法について少し読みましたが、私の特定の状況に当てはまるものは見つかりませんでした。データベースから edmx を更新するプロセスで、単純な手順を見逃している可能性があります。新しいテーブルの追加、列の追加、列の削除など、これを何度も行ってきました。いつもと同じ手順に従っています。

助けてくれてありがとう。大変感謝しております。さらに情報が役立つかどうか教えてください。

4

2 に答える 2

0

私はこれに少し遅れていますが、このスレッドUpdating Entity Framework Model after added a field to a previous look up only tableに答えがあります

ここで言うように、デザイナーで学生とコースの間の関係を削除する必要があります。次に、データベースからモデルを更新し、[追加] タブの [テーブル] ブランチで StudentsCourses テーブルがオンになっていることを確認します。

于 2016-12-20T15:17:27.967 に答える