Это немного менее сложно, чем предложила Сен-Жербиль:
Model.Order order = _session
.CreateCriteria<Model.Order>()
.Add(Restrictions.Eq("UserName", user.UserName))
.Add(Restrictions.Eq("CompanyId", companyId))
.Add(Restrictions.Eq("OrderStatus", OrderStatusHelper.OrderOpen()))
.AddOrder(sortOrder)
.SetMaxResults(1)
.UniqueResult<Model.Order>();
Это выполнит запрос с использованием синтаксиса БД для получения только одной записи.
Если нет записей, соответствующих критериям, UniqueResult
возвращает ноль.
Вы также можете использовать NHibernate Linq (либо провайдер 2.x contrib, либо интегрированный в NH 3.x). В этом случае вы должны использовать FirstOrDefault
вместо SingleOrDefault
для достижения желаемого результата.