私は、ASP.NET MVC 5とEntity Framework 6のトップにデータベースファーストアプローチを使用してC#を使用して書かれたアプリケーションを用意しました。Entity Framework 6とHas-Many-Through関係を作成するにはどうすればよいですか?
私はStudent
モデル、ClassRoom
モデル、および2つの関係を結びつける関係モデルを持っていて、StudentToClassRoom
と呼ばれています。
すべての生徒を選択できるようにしたいと思っています。生徒ごとに、ClassRoom
の生徒にも関係があるようにしたいと考えています。ここで
は、ここに私のモデル
public class Student
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<ClassRoom> ClassRoomRelations { get; set; }
}
public class StudentToClassRoom
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("Student")]
[InverseProperty("Id")]
public int StudentId { get; set; }
[ForeignKey("ClassRoom")]
[InverseProperty("Id")]
public int ClassRoomId { get; set; }
public virtual Student Student { get; set; }
public virtual ClassRoom ClassRoom { get; set; }
}
public class ClassRoom
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
}
ある私は
var students = DbContext.Students.Include(x => x.ClassRoomRelations)
.ToList();
は、しかし、それは各学生のために私に関係のコレクションを与える試みたものです。しかし、私は各学生のためのClassRoom
の情報を得ることができるようにしたいです。だから私は学生とクラスルームの間にハス・マルチ・スルーを作りたいと思っています。最後の結果では、私は実際にClassRoomRelations
を気にしません、私はStudent
とClassRoom
オブジェクトについてのみ気にします。
Entity Frameworkを使用して、生徒のリストと各生徒のすべてのクラスルームのコレクションを取得するにはどうすればよいですか?
あなたの時間を浪費しないでください。 EFはそのような関係をサポートしていません。 –
@IvanStoevありがとう:)同じデータセットを取得するための回避策はありますか? –
暗黙のジャンクションテーブルで 'many-to-many'が実際に必要な場合のみ。既存のデータベースにバインドされている場合( 'StudentToClassRoom'は自動ジャンクションテーブルに適さない)、これは問題でもあります。 –