Saya menggunakan kode berikut di salah satu proyek saya:
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;
}
}
}
Dengan cara ini, ini akan meminta database dua kali hanya jika terjadi pengecualian saat mencoba menghapus item dengan ID yang ditentukan. Kemudian jika item tidak ditemukan, itu mengembalikan pesan yang berarti; jika tidak, itu hanya mengembalikan pengecualian (Anda dapat menangani ini dengan cara yang lebih sesuai dengan kasus Anda menggunakan blok tangkapan yang berbeda untuk jenis pengecualian yang berbeda, tambahkan lebih banyak pemeriksaan khusus menggunakan blok if dll.).
[Saya menggunakan kode ini dalam proyek MVC .Net Core / .Net Core dengan Entity Framework Core.]