EF 6.0 DBSet.AddRange()-如何跳过单个实体错误



我正在尝试使用DBSet.AddRange()推送100个动态创建的产品实体。

例如,如果1st Product实体存在一些数据问题并抛出Commit()期间出现异常,所有剩余的99个产品实体也没有去拯救。

是否可以跳过损坏的实体,以便其他实体可以使用DBSet.AddRange()保存吗?

您不能使用EF执行此操作,您必须更改逻辑并在将实体添加到EF上下文之前验证实体。或者,你必须单独添加它们,并在每个之后提交,但这会降低效率。

因为不可能跳过无效实体。我会亲自做这件事。

  1. 我首先尝试做一个AddRange
  2. 然后处理一个异常,当添加批次失败时,逐个执行

至少这样,你可以平衡它。

try
{
    await entities.AddRange(batch);
    await unitOfWork.Save();
}
catch (Exception ex)
{
    await SaveEntities(batch);
}
public void SaveEntities(List<Entity> entities)
{
    foreach (var item in entities)
    {
        // add one by one.
    }
}

相关内容

  • 没有找到相关文章

最新更新