首页 > 解决方案 > EF Core SaveChangesAsync 杀死任务 - 没有错误

问题描述

我有一个 Job Scheduler (QUARTZ) - 它运行 Tasks,但我遇到了一个为我映射产品的问题。

基本上,foreach 循环中有 106 个产品供它检查,因为它会创建一个不存在的产品,将实体添加到 DB 并调用 await _db.SaveChangesAsync(),它会退出线程,不会陷入任何捕获,只是完全停止循环和任务。调试器或日志没有输出。我不知道为什么它突然停止了。如果我删除异步并简单地调用 SaveChanges() 它不会停止并且也会执行它应该做的事情..

注意:在保存更改、选择等之前,有以前的数据库检查调用异步,这些似乎都没有任何问题。我检查了数据,实体模型没有问题。如果我自己运行该代码部分,它确实会存储到数据库中。更奇怪的是,这段代码在前几个产品上运行得很好,创建它们很好,点击 #4 然后停止。一开始我以为是foreach,换成了for,没区别。

foreach(var prod in mainProducts)
{
   //Does Checks .. Code Removed
   if (!exists)
   {
      ...
      _db.DeviceVariations.Add(theEntity);
      await _db.SaveChangesAsync(); //Stops here..
    }
}

有没有人经历过这种情况,知道可能的原因吗?

标签: entity-framework-core

解决方案


推荐阅读