Я знаю, что это старый пост, но я столкнулся с этой проблемой сегодня, и ни один из ответов здесь не помог. У нас был метод с именем CountByExample (), который работает правильно, если столбец идентификатора не указан в примере.
Для нашего сценария счет действителен, только если существует объект с указанным идентификатором с определенным набором параметров. Объект - довольно большой объект, поэтому загрузка его была бы ненужной тратой ресурсов и полосы пропускания. Поскольку NHibernate удаляет идентификатор из примера, счетчик всегда был неверным.
Я решил эту проблему с помощью следующей настройки, которая прекрасно работает для меня.
criteria.Add(example);
//HACK: Check for ID query and force NHibernate to take it
var prop = searchParameters.GetType().GetProperty("ID");
if (prop != null)
{
criteria.Add(Restrictions.Eq("ID", prop.GetValue(exampleT)));
}
Где "searchParameters" - это объект типа:
var searchParameters= new { ID = 48, isEnabledForAds = true, hasOptedOut = false};