2015-07-10 57 views
0

我在学生和课程之间有多对多的关系。如何使用未来的查询Nhibernate在多对多的情况下

public class Student 
{ 
    public virtual Id {get; set;} 
    public virtual Name {get; set;} 
    public virtual IList<Course> Courses {get; set;} 
} 

public class Course 
{ 
    public virtual Id {get; set;} 
    public virtual Name {get; set;} 
    public virtual IList<Student> Students {get; set;} 
} 

这些实体具有相应的表格,包括CourseToStudent的多对多表格。

我想用Nhibernate的未来编写最优化的查询来获得课程或学生。

我知道我可以在一对多中使用未来,但我们如何使用未来编写多对多的查询。

例如对于一些到一个到许多查询Semester到课程。 1学期可以有很多课程,但1门课只能属于一个学期。

所以,我可以写将来查询作为

Semester= _repository.Future<Entity.Semester>(_repository.Query<Entity.Semester>().where(x=>x.Id = semesterId)); 

Course= _repository.Future<Entity.Course>(_repository.Query<Entity.Course>().where(x=>x.Semester.Id = semesterId)); 

但我很困惑如何使用未来在很多情况下很多。任何人都可以解释我是否应该在这里使用未来。

回答

0

如果我正确理解你的问题,你要选择学生混凝土学期,比你可以使用这样的事情:

session.Query<Student>() 
    .Where(s => s.Courses.Any(c => c.Semester.Id = semesterId)) 
    .Future(); 

或者

session.Query<Course>() 
    .Where(c => c.Semester.Id = semesterId) 
    .SelectMany(c => c.Students) 
    .Future(); 
相关问题