ฉันใช้รหัสต่อไปนี้ในหนึ่งในโครงการของฉัน:
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;
}
}
}
วิธีนี้จะสอบถามฐานข้อมูลสองครั้งก็ต่อเมื่อมีข้อยกเว้นเกิดขึ้นเมื่อพยายามลบรายการที่มี ID ที่ระบุ จากนั้นหากไม่พบรายการจะส่งคืนข้อความที่มีความหมาย มิฉะนั้นมันก็แค่โยนข้อยกเว้นกลับไป (คุณสามารถจัดการสิ่งนี้ให้เหมาะกับกรณีของคุณมากขึ้นโดยใช้บล็อกการจับที่แตกต่างกันสำหรับประเภทข้อยกเว้นที่แตกต่างกันเพิ่มการตรวจสอบแบบกำหนดเองเพิ่มเติมโดยใช้ if บล็อกเป็นต้น)
[ฉันใช้รหัสนี้ในโครงการ MVC .Net Core / .Net Core ที่มี Entity Framework Core]