Entity framework 插入记录时是否允许异常,或先检查并短路?

Entity framework 插入记录时是否允许异常,或先检查并短路?,entity-framework,Entity Framework,对于要插入的对象具有备用密钥的HttpPost操作,插入时处理数据库冲突的最佳选项是什么 我是否应该首先检查实体是否存在,并返回一个冲突的错误代码 if (ReportingContext.Reports.Any(r => r.ReportId == report.ReportId)) { return new HttpStatusCodeResult(StatusCodes.Status409Conflict); } 我应该简单地允许操作进行,如

对于要插入的对象具有备用密钥的HttpPost操作,插入时处理数据库冲突的最佳选项是什么

我是否应该首先检查实体是否存在,并返回一个冲突的错误代码

    if (ReportingContext.Reports.Any(r => r.ReportId == report.ReportId))
    {
        return new HttpStatusCodeResult(StatusCodes.Status409Conflict);
    }
我应该简单地允许操作进行,如果没有冲突,允许成功地添加到数据库中,或者如果有冲突,则抛出异常吗


更糟糕的是什么?对数据库的两个调用,一个用于检查实体是否存在,第二个用于插入新实体。。。或者在内存中创建一个新实体并分配所有属性的开销,结果由于冲突而导致它异常?数据库的负担与服务器的不必要负担?

即使您检查了是否存在实体,在您保存实体之前,其他人在您检查实体是否存在后插入实体,这仍然可能存在竞争。这一切都取决于其他功能性/非功能性需求、首选项、传统等,。。。这是一个冗长的说法:基于观点。所以可能不是一个合适的问题。。。