10

データベースの最初のモデルを使用する: 従来のテーブルStudent,CourseStudentCourse(後者には明らかに と への FK がある) があるStudentとしCourseます。

このモデルを EF にインポートすると、それぞれに対してオブジェクトが生成されます。StudentおよびCourseクラスにはそれぞれ のコレクションがあり、StudentCoursesそこから別のリレーションシップをジャンプしてCourseまたはStudentにそれぞれ到達する必要があります。

基礎となる交差テーブルが非表示になるようにコードを生成したいと考えています。つまりStudent、 のコレクションがありCoursesCourseのコレクションがありStudentsます。これが他のORMソフトウェア(具体的にはTopLink )で行われているのを見てきました。それはEFで行うことができますか?

4

2 に答える 2

10

このチュートリアルによると、StudentCourseテーブルに外部キー列のみが含まれている場合、目的の動作が得られます。他の列が含まれている場合、EF は結合を表す中間エン​​ティティを生成します。

この場合、StudentCourseテーブルから代理キーを削除し、それを複合主キーに置き換えるとうまくいくはずです。

于 2012-11-28T12:20:29.323 に答える
-3

ICollections を使用して EF Code First で実行できます。例えば:

public class Student 
{ 
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Course> Courses { get; set; }

    public Student()
    {
        Courses = New HashSet<Course>();
    }
}

コースについて繰り返し、全体を入れ替えます。これにより、データベースに 3 つのテーブル (Student、Course、StudentCourse) が m 対 m の関係で作成されます。最も重要なことは、StudentCourse がモデルにエンティティを持たない非表示のリンク テーブルになることです。

于 2012-11-27T16:30:47.343 に答える