NHibernate的查询对象集合问题
问题描述:
我是新来NHibernate和需要关于发动机的内部工作的一些信息:NHibernate的查询对象集合问题
我有一个叫学生表和设计如下:
RollNo
Name
City
Postcode
和还有5个像这样的列。我有学校班级和与之相关的映射。
我使用的会话查询RollNo和名称如下:
IQuery query = session.CreateQuery("SELECT RollNo,Name FROM Student);
执行query.List导致错误,因为该查询返回的对象[] []。现在
,我改变了查询,如下所示:
IQuery query = session.CreateQuery("FROM Student);
此查询执行query.List yeilds所期望的结果。但是,结果包含的数据比我想要的要多。
可否请你让我知道了查询,我可以从学生获得RollNo和名称,浇注料为学生集合。
感谢, 马赫什
答
我认为你可能会混淆查询数据库的列和查询对象。当您为您指定的代表学生的学生对象设置映射时,它必须包含某些属性。当您基于该对象进行查询时,您将返回指定为学生属性的任何映射。
说了这么多,可以查询数据库,唯一需要的数据恢复到一个新的对象。
//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>();
我想这将有可能提供学生一个Constructor对象,类似于这里的构造和学生对象做同样的事情。 我用这种方法看到的问题是,您可能会尝试使用学生对象,当它没有完全水合,并尝试访问其他属性,如城市和邮政编码,并获得意想不到的结果。