C# 如何从其他函数和类访问NH QueryOver别名?

C# 如何从其他函数和类访问NH QueryOver别名?,c#,nhibernate,C#,Nhibernate,我希望能够在其他几个函数中使用一个特定的查询,我有一个类,它只为特定域创建一个专门的QueryOver对象 但该函数使用alias对象创建连接。如何从其他函数访问这些别名 例如,假设我有课程实体,每个实体都有一个学生集合。 我总是只想参加活动的(布尔值)课程 从SomeOtherClass.getActiveCoursesSummary中,我想修改查询以仅获取注册了“Bob”的课程。但我无法访问studentAlias,因为它是在另一个函数中定义的 我可以在这里做什么,或者我的设置完全不正确?事

我希望能够在其他几个函数中使用一个特定的查询,我有一个类,它只为特定域创建一个专门的QueryOver对象

但该函数使用alias对象创建连接。如何从其他函数访问这些别名

例如,假设我有课程实体,每个实体都有一个学生集合。 我总是只想参加
活动的
(布尔值)课程

SomeOtherClass.getActiveCoursesSummary
中,我想修改查询以仅获取注册了“Bob”的课程。但我无法访问studentAlias,因为它是在另一个函数中定义的

我可以在这里做什么,或者我的设置完全不正确?

事实上,我们可以在
其他类中重新声明相同的变量

public List<Course> GetActiveCourseSummary(QueryOver<Course, Course> queryOver)
{
    Address studentAlias = null;
    var query = queryOver.Where(() => studentAlias.Name == "Bob");
    ...
}
public class SomeOtherClass
{
  public List<Course> GetActiveCourseSummary(QueryOver<Course, Course> queryOver)
  {
      var query = queryOver.Where(a=> studentAlias.Name = "Bob");
      ...
  }
}
public List<Course> GetActiveCourseSummary(QueryOver<Course, Course> queryOver)
{
    Address studentAlias = null;
    var query = queryOver.Where(() => studentAlias.Name == "Bob");
    ...
}
public List<Course> GetActiveCourseSummary(QueryOver<Course, Course> queryOver)
{
    var criteria = query.UnderlyingCriteria;
    var rootAlias = criteria.Alias;              // will return "courseAlias"
    var path = rootAlias + ".Student";           // the path
    var student = criteria.GetCriteriaByPath(path)
            ?? criteria.CreateCriteria(path, path);
    var studentAlias = student.Alias;            // finally we do have existing alias
    queryOver.And(Restrictions.Eq(studentAlias + ".Name ", "Bob"));
    ...