我有一个应用程序使用C#编写的ASP.NET MVC 5和实体框架6的顶部使用数据库优先的方法。如何创建与实体框架6的Has-Many-Through关系?
我有一个Student
模型,一个ClassRoom
模型和关系模型将两个关系连接在一起,称为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
信息。所以我想在Student和ClassRoom之间创建一个Has-Many-Through。最后的结果,我并不在意ClassRoomRelations
,我只关心Student
和ClassRoom
对象。
如何使用实体框架为每个学生获取Student和所有Class-Rooms的集合?
不要浪费你的时间搜索。英孚不支持这种关系。 –
@IvanStoev谢谢:)有没有解决方法来获取相同的数据集? –
仅当您确实需要隐式联结表的“多对多”。尽管如果绑定到现有数据库,即使这存在问题(“StudentToClassRoom”不适用于自动联接表)。 –