Проблема коллекции объектов NHibernate Query - PullRequest
0 голосов
/ 19 мая 2010

Я новичок в NHibernate и мне нужна информация о внутренней работе двигателя:

У меня есть таблица с именем Student, и дизайн выглядит следующим образом:

RollNo
Name
City
Postcode

и есть еще 5 таких столбцов. У меня есть школьный класс и сопоставления, связанные с ним.

Я запрашиваю RollNo и Name, используя сессию, как указано ниже:

IQuery query = session.CreateQuery("SELECT RollNo,Name FROM Student);

Выполнение query.List приводит к ошибке, так как запрос возвращает объект [] [].

Теперь я изменил запрос, как показано ниже:

 IQuery query = session.CreateQuery("FROM Student);

Выполнение запроса. Список этого запроса дает желаемые результаты. Но результаты содержат больше данных, чем я хочу.

Не могли бы вы сообщить мне запрос, по которому я могу получить RollNo и Name от Student и передать их в коллекцию Student.

Спасибо, Махеш

1 Ответ

1 голос
/ 20 мая 2010

Я думаю, что вы можете смешивать запросы к столбцам базы данных и запросы к объектам. когда вы настраивали отображение для объекта ученика, вы указали, что для представления учащегося он должен содержать определенные свойства. когда вы делаете запрос на основе этого объекта, вы получите обратно все, что указано в качестве свойств студента для отображения.

Сказав, что можно запросить базу данных и вернуть только те данные, которые вы хотите, новому объекту.

//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>();

Полагаю, можно было бы предоставить конструктор для объекта студента, аналогичный описанному здесь, и сделать то же самое для объекта студента. Проблема, с которой я сталкиваюсь при таком подходе, заключается в том, что вы можете попытаться использовать объект ученика, когда он не был полностью увлажнен, и попытаться получить доступ к другим свойствам, таким как Город и почтовый индекс, и получить непредвиденные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...