我想在results
变量中显示每个学生的成绩信息。
我的数据库设置方式是:
Grade --- GradeStudent --- Student
因此,每个不同的年份,我都会有一个独特的GradeStudent
记录,其中包含成绩ID,学生ID以及该记录的年份。
我使用Entity Framework 4作为我的ORM,我想在dataGridView中为每个学生显示成绩名称。
private void btnSearch_Click(object sender, EventArgs e)
{
StudentRepository repo = new StudentRepository();
var results =
repo.FindAllStudents().Where(
s =>
s.Name == txtSearchQuery.Text ||
s.LastNameFather == txtSearchQuery.Text ||
s.LastNameMother == txtSearchQuery.Text);
dataGridView1.DataSource = results.Select(s => new
{
Codigo = s.StudentId,
Nombre = s.LastNameFather + " " + s.LastNameMother + ", " + s.Name,
Sexo = s.Sex,
Telefono = s.Telephone
}).ToList();
}
如果我尝试执行以下操作,我只能调用EntityCollection集合,因为可能有许多与我的学生关联的GradeStudent对象。每年一个。
所以我需要获得他在X年期间的成绩。
你对如何做到这一点有什么建议吗?
答案 0 :(得分:0)
如果我理解了这个问题 - 您希望获得Grade对象(通过GradeStudent中间表)。如果是这种情况,您需要在EF模型中创建一个NavigationProperty,以将Grade与GradeStudent(* - 1)和GradeStudent与Student(0..1 - *)相关联。
至于将数据提取到您的上下文中,这是一个使用RIA的Silverlight应用程序吗?如果是这样,您的服务中的GetStudentsQuery方法将需要包含这些实体,以便与您的Student对象一起返回数据。
答案 1 :(得分:0)
如果grade
已知,则应该有效:
StudentRepository repo = new StudentRepository();
var results =
repo.FindAllStudents().Where(
s =>
(s.Name == txtSearchQuery.Text ||
s.LastNameFather == txtSearchQuery.Text ||
s.LastNameMother == txtSearchQuery.Text) &&
s.GradeStudent.Any(gs => gs.Grade = grade));