Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在多对多关联的情况下如何使用未来查询Nhibernate_C#_.net_Linq_Hibernate_Nhibernate - Fatal编程技术网

C# 在多对多关联的情况下如何使用未来查询Nhibernate

C# 在多对多关联的情况下如何使用未来查询Nhibernate,c#,.net,linq,hibernate,nhibernate,C#,.net,Linq,Hibernate,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 N

我在学生和课程之间有着多对多的关系

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;}
}
公共班级学生
{
公共虚拟Id{get;set;}
公共虚拟名称{get;set;}
公共虚拟IList课程{get;set;}
}
公共课
{
公共虚拟Id{get;set;}
公共虚拟名称{get;set;}
公共虚拟IList学生{get;set;}
}
这些实体具有相应的表,包括CourseToStudent的多对多表

我想使用Nhibernate future编写最优化的查询,以获得课程或学生

我知道我可以在一对多中使用future,但如何使用future编写多对多查询呢

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

因此,我可以将未来查询编写为

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));
sement=\u repository.Future(\u repository.Query().where(x=>x.Id=semesterId));
Course=\u repository.Future(\u repository.Query().where(x=>x.semeter.Id=semesterId));

但我不知道在多对多的情况下如何使用未来。谁能解释一下我是否应该在这里使用future

如果我正确理解您的问题,您希望为具体的学期选择学生,那么您可以使用以下内容:

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

session.Query()
.其中(c=>c.semeter.Id=semesterId)
.SelectMany(c=>c.Students)
.Future();
session.Query<Course>()
    .Where(c => c.Semester.Id = semesterId)
    .SelectMany(c => c.Students)
    .Future();