При вызове Max() в IQueryable и нулевых записей появляется следующее исключение.
Недопустимое значение cast для значения 'Int32', потому что материализованное значение равно null. Либо общий параметр типа результата, либо запрос должен использовать тип с нулевым значением.
var version = ctx.Entries
.Where(e => e.Competition.CompetitionId == storeCompetition.CompetitionId)
.Max(e => e.Version);
Теперь я понимаю, почему это происходит, мой вопрос заключается в том, как это лучший способ сделать это, если таблица может быть пустой. Приведенный ниже код работает и решает эту проблему, но очень уродливо нет концепции MaxOrDefault()?
int? version = ctx.Entries
.Where(e => e.Competition.CompetitionId == storeCompetition.CompetitionId)
.Select(e => (int?)e.Version)
.Max();