Я использую следующий код в одном из моих проектов:
using (var _context = new DBContext(new DbContextOptions<DBContext>()))
{
try
{
_context.MyItems.Remove(new MyItem() { MyItemId = id });
await _context.SaveChangesAsync();
}
catch (Exception ex)
{
if (!_context.MyItems.Any(i => i.MyItemId == id))
{
return NotFound();
}
else
{
throw ex;
}
}
}
Таким образом, он будет запрашивать базу данных дважды, только если возникает исключение при попытке удалить элемент с указанным идентификатором. Затем, если элемент не найден, он возвращает значимое сообщение; в противном случае он просто отбрасывает исключение (вы можете обработать его более подходящим образом для вашего случая, используя разные блоки catch для разных типов исключений, добавив больше пользовательских проверок, используя блоки if и т.
[Я использую этот код в проекте MVC .Net Core / .Net Core с Entity Framework Core.]