2011-04-06 8 views
0

나는 다음과 같은 데이터베이스가 :이 데이터베이스 스키마에서 학생 목록을 얻으려면 어떻게해야합니까?

table Student 
StudentID 
Name 
LastName 

table Grade 
GradeId 
Name 

table GradeInstance 
GradeInstanceId 
GradeId 
Name 
Year 

table StudentInstance 
StudentInstanceId 
GradeInstanceId 
StudentInstanceId 

가 어떻게 주어진 등급 인스턴스 학생들의 목록을 검색 할 수 있습니다?

저는 ORM으로 Entity Framework를 사용하고 있습니다. 그래서 Linq 쿼리는 어떻게 될까요?

편집 : GUI를 채우기 위해 필요한 속성이 없으므로 StudentInstance 객체가 아닌 Student 객체를 반환해야합니다.

내가 뭔가를 여기에서 놓치지 않는 한 그래서 이렇게 뭔가가 나를 위해 작동하지 않습니다. :이 시작하는 데 도움이해야 P

dbContext.StudentInstances.Where(s => s.GradeInstanceId == 1); 

답변

1
from s in dbContext.Student 
join si in dbContext.StudentInst on s.StudentID equals si.StudentInstanceID 
join g in dbContext.Grade on si.GradeInstanceID equals g.GradeID 
where g.Name = ... 
select s; 
0

....

public static List<Student> GetStudents(int gradeId) 
    { 
     using (var context = new Entities()) 
     { 
      List<Student> myList = (from s in dbContext.Student 
join si in dbContext.StudentInst on s.StudentID equals si.StudentInstanceID 
join g in dbContext.Grade on si.GradeInstanceID equals g.GradeID 
where g.GradeId = gradeId 
select s).ToList(); 

     return myList; 
     } 
    } 

약간 query 수정 사용 : D

+0

그렇지 않은 경우 모든 학생에게 반환됩니다. GradeInstanceId로 X 번호가있는 StudentInstance 테이블에있는 학생 만 필요합니다. –

0

당신이 당신의 GradeInstance 엔티티에 탐색 속성을 추가 할 수 있습니다 그것과 관련된 학생 단체의 콜렉션 (실제로 협회 추가 마법사에서 할 수있는 가능성이 있습니다), 다음과 같이 간단히 접근 할 수 있습니다 : gradeInstance.Students

희망이 있습니다.

관련 문제