Tôi đang sử dụng mã sau trong một trong các dự án của mình:
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;
}
}
}
Bằng cách này, nó sẽ truy vấn cơ sở dữ liệu hai lần chỉ khi một ngoại lệ xảy ra khi cố gắng xóa mục có ID được chỉ định. Sau đó, nếu mục không được tìm thấy, nó sẽ trả về một thông điệp có ý nghĩa; nếu không, nó chỉ ném lại ngoại lệ (bạn có thể xử lý điều này theo cách phù hợp hơn với trường hợp của mình bằng cách sử dụng các khối bắt khác nhau cho các loại ngoại lệ khác nhau, thêm nhiều kiểm tra tùy chỉnh hơn bằng cách sử dụng khối if, v.v.).
[Tôi đang sử dụng mã này trong dự án MVC .Net Core / .Net Core với Entity Framework Core.]