Когда таблица пуста, я думаю, что все три исполнения аналогичны времени. Но не уверен, каково будет влияние производительности, когда таблица имеет миллион записей.Правильная опция для дескриптора MAX(), когда таблица пуста?
1. Исходный запрос не влияет, но не нравится, потому что нужно сделать два разделенных справки db.
2. Не нравится, потому что, когда ни одна пустая таблица не должна приводить все строки вместо использования индекса, чтобы найти max.
3. Ну, это должно возвращать null вместо повышения ошибки.
long? LastInsertedID;
try
{
LastInsertedID = db.myTable.Any() ?
db.myTable.Max(p => p.id)
: 0;
LastInsertedID = db.myTable.Select(p => p.id)
.DefaultIfEmpty(0)
.Max();
LastInsertedID = db.myTable.Max(p => p.id); -- cause Exception
}
Исключение:
{ "Бросок к типу значения„System.Int64“не удалось, так как материализованная значение равно нулю либо универсальный параметр типа результата или запрос должен использовать обнуляемого тип.. "}
Что такое тип 'id'? Я думал, что это приведет к тому, что исключение «sequence contains no items» –
в db не равно NULL длинному целому числу, но проблема в том, что db пуст. –