我的数据库模型存在问题。我对此很新,因此提前抱歉。以下是我自动生成的类的外观......
会话模型
public partial class Session
{
public Session()
{
this.Tutors = new HashSet<Tutor>();
}
public int SessionId { get; set; }
public int StudentStudentId { get; set; }
public virtual Student Student { get; set; }
public virtual ICollection<Tutor> Tutors { get; set; }
}
学生模特
public partial class Student
{
public Student()
{
this.Sessions = new HashSet<Session>();
}
public int StudentId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Session> Sessions { get; set; }
}
控制器
public Student Get(int id)
{
using(var db = new studytree_dbEntities())
{
Student s = db.Students.FirstOrDefault(i => i.StudentId == id);
return s;
}
}
我知道问题是什么。数据库从接收数据的学生表中查询。由于它具有sessionid列,因此会转到会话表并查询会话。但由于它是一对多关系,因此会话表有一个学生,因此创建了一个循环。一个学生抓住它会话,会话抓住它的学生等......我怎样才能使它只有一个深度。我想要做的是查询学生并获得其所有属性。
答案 0 :(得分:0)
一种方法是手动实现学生及其课程,而不会实现会话的学生参考。此代码假定Tutor未引用任何学生。如果是的话,你也需要手动实现Tutor。
using(var db = new studytree_dbEntities())
{
Student s = db.Students
.Where(s => s.StudentId == id)
.ToList()
.Select(s => new Student {
FirstName = s.FirstName,
LastName = s.LastName,
Sessions = s.Sessions.Select(session => new Session {
Tutors = session.Tutors
}),
})
.FirstOrDefault();
return s;
}