Projelerimden birinde aşağıdaki kodu kullanıyorum:
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;
}
}
}
Bu şekilde, yalnızca belirtilen kimliğe sahip öğeyi kaldırmaya çalışırken bir istisna meydana gelirse veritabanını iki kez sorgulayacaktır. Ardından öğe bulunmazsa anlamlı bir mesaj verir; aksi takdirde, istisnayı geri atar (bunu, farklı istisna türleri için farklı yakalama blokları kullanarak durumunuza daha uygun bir şekilde halledebilir, if bloklarını kullanarak daha fazla özel kontrol ekleyebilirsiniz vb.).
[Bu kodu Entity Framework Core ile bir MVC .Net Core / .Net Core projesinde kullanıyorum.]