То, как вы это делаете, - это нормально получить исключение, поскольку перечислимое значение, возвращаемое GetSession.Query<Page>()
, пусто (поскольку таблица пуста, как вы упомянули).
Исключение, которое выдолжно быть: последовательность не содержит элементов.Исключением, которое вы упоминаете в своем вопросе, является то, что переменная item (которая не имеет отношения к запросу NHiberanate, который вы перечислили выше) имеет значение null (строка 54 присваивает свойству item значение null).
Более безопасный способ получить максимумиз свойства в таблице будет следующее:
var max = GetSession.CreateCriteria<Page>()
.SetProjection(Projections.Max("PageOrder"))
.UniqueResult();
или использование QueryOver с NHibenrate 3.0:
var max = GetSession.QueryOver<Page>()
.Select(
Projections
.ProjectionList()
.Add(Projections.Max<Page>(x => x.PageOrder)))
.List<int>().First();
Если таблица пуста, вы получите max = 0