NHibernate查询对象集合问题

NHibernate查询对象集合问题,nhibernate,object,mapping,Nhibernate,Object,Mapping,我是NHibernate的新手,需要一些关于发动机内部工作的信息: 我有一张名为Student的桌子,设计如下: RollNo Name City Postcode 还有5列是这样的。我有学校班级和与之相关的映射 我正在使用会话查询RollNo和Name,如下所示: IQuery query = session.CreateQuery("SELECT RollNo,Name FROM Student); IQuery query = session.CreateQuery("FROM St

我是NHibernate的新手,需要一些关于发动机内部工作的信息:

我有一张名为Student的桌子,设计如下:

RollNo
Name
City
Postcode
还有5列是这样的。我有学校班级和与之相关的映射

我正在使用会话查询RollNo和Name,如下所示:

IQuery query = session.CreateQuery("SELECT RollNo,Name FROM Student);
 IQuery query = session.CreateQuery("FROM Student);
正在执行query.List,导致错误,因为查询正在返回对象[]

现在,我更改了查询,如下所示:

IQuery query = session.CreateQuery("SELECT RollNo,Name FROM Student);
 IQuery query = session.CreateQuery("FROM Student);
在此查询上执行query.List将得到所需的结果。但是,结果包含的数据比我想要的要多

你能让我知道我可以从学生那里得到RollNo和Name的查询吗?castable as Student collection

谢谢,
Mahesh

我认为您可能混淆了查询数据库的列和查询对象。为学生对象设置映射时,指定要表示学生,它必须包含某些属性。当您基于该对象进行查询时,您将返回您指定为学生属性的映射

前面已经说过,可以查询数据库并只将您想要的数据返回给新对象

//Domain Object
public class StudentLite
{

  public StudentLite(int rollNo, string name)
  {
    this.RollNo = rollNo;
    this.StudentName = name;
  }
  public virtual int RollNo {get; set}
  public virtual string StudentName {get; set;}
}

//DataAccess Layer
IList<StudentLite> = Session.CreateQuery("SELECT new StudentLite(RollNo,Name) FROM Student").List<StudentLite>();
//域对象
公共班级学生精英
{
public StudentLite(int-rollNo,字符串名)
{
this.RollNo=RollNo;
this.StudentName=name;
}
公共虚拟int RollNo{get;set}
公共虚拟字符串StudentName{get;set;}
}
//数据访问层
IList=Session.CreateQuery(“从学生中选择新的StudentLite(RollNo,Name)).List();
我想在student对象上提供一个类似于这里的构造函数的构造函数,并对student对象执行相同的操作是可能的。 我认为这种方法存在的问题是,当student对象尚未完全水合时,您可能会尝试使用它,并尝试访问其他属性,如城市和邮政编码,从而获得意外结果