对于HttpPost操作,其中插入的对象具有备用键,插入时处理数据库冲突的最佳选择是什么?
我应该先检查实体是否存在并返回存在冲突的错误代码
if (ReportingContext.Reports.Any(r => r.ReportId == report.ReportId))
{
return new HttpStatusCodeResult(StatusCodes.Status409Conflict);
}
我是否应该简单地允许操作通过,如果没有冲突则允许成功添加到数据库中,或者如果存在冲突则允许抛出异常?
更糟糕的是什么?这两个调用数据库,一个用于检查实体是否存在,第二个用于插入新实体...或者在内存中创建新实体并分配所有属性的开销,只是为了让它异常,因为有冲突?数据库的负担与服务器上的不必要的负担?