Если Single
не находит элемент, который вы ожидаете существовать, он бросает InvalidOperationException
. Единственная проблема заключается в том, что другие вещи также приводят к этому исключению. Например, модель первого кода EF устарела.Лучший способ поймать «Последовательность не содержит элементов»
Я попытался сузить его, проверив сообщение об исключении. Однако это может измениться, и я бы не стал мудрее. Есть ли лучший способ поймать эту проблему?
try
{
return DbSet.Single(filter);
}
catch (InvalidOperationException exc)
{
if (exc.Message == "Sequence contains no elements")
{
throw new UserNotFoundException();
}
throw;
}
OK. Вид поражения цели Первого не так. –
Первый и единственный имеют свои применения. Когда вы * знаете *, у вас есть хотя бы один элемент, а вероятность того, что вы его не удаляете, вы можете использовать Single. – Amy