dotnet EF Core批处理语句在语句失败后继续执行语句



我正在开发一个系统,将从另一个系统获取大量的数据。我使用EF Core 3.0将这些数据分批插入。我正在寻找一种方法来继续执行其他语句,即使有/有异常的语句。例如:如果我在数据库中插入10条记录,记录号3有一个错误,EF Core应该阻止它保存,但继续尝试保存剩余的7条记录。

我尝试过的事情:

拦截器

我找不到让系统继续运行CommandFailed功能的方法。

与其使用拦截器,不如考虑批量运行更新,这样会删除无效条目并重新保存。

对于每个"batch"要保存的记录:

bool isSaved = false;
do
{
try
{
await context.SaveChangesAsync();
isSaved = true;
}
catch (DbUpdateException ex)
{
foreach (var entry in ex.Entries)
entry.State = EntityState.Detached; // Remove from context so won't try saving again.
}
}
while (!isSaved);

原文来源:http://andreyzavadskiy.com/2016/09/22/ignoring-dbupdateexception-and-continue/

相关内容

  • 没有找到相关文章

最新更新