2013-08-02 4 views
2

Я новичок в NHibernate и занимаюсь выбором из одной таблицы на основе критериев. Я читал, что использование IQuery не требуется, если я хочу только выбрать данные на основе идентификатора, и что я должен использовать session.Get (id).NHibernate Выберите данные из таблицы на основе столбца непервичного ключа

Это отлично подходит для выбора на основе значения первичного ключа таблицы, но я не мог понять, как выбирать данные на основе другого уникального столбца, который не является первичным ключом. Есть ли способ использовать session.Get, чтобы сделать это, или я направляюсь в неправильном направлении?

Короче:

  1. session.Get<T>(primary key value) будет возвращать данные
  2. session.Get<T>(not primary key value) возвратит нуль

Есть ли способ сделать 2?

+0

Это может работать для вас: http://stackoverflow.com/questions/2274969/using-nhibernates-isession-get-w-a-composite-key – Greg

ответ

3

Невозможно использовать Get или Load без идентификатора, поскольку по своей природе они вытаскивают одну запись через уникальную идентификацию.

Если вы хотите вытащить записи из таблицы, вам необходимо отправить запрос по критериям, которые вы ищете.

Пример:

var whateverRecord = session.Query<WhateverType>().Where(x=>x.WhateverColumn == WhateverValue).FirstOrDefault(); 
Смежные вопросы