【问题标题】:Microsoft.EntityFrameworkCore Async not workingMicrosoft.EntityFrameworkCore 异步不起作用
【发布时间】:2020-12-03 19:36:29
【问题描述】:

我见过的最奇怪的问题之一。 我正在使用实体框架发出异步 SQL 请求

环境: 点网核心 nuget Microsoft.EntityFrameworkCore 版本 3.1.19

它适用于 Visual Studio。 部署在 Kubernetes 集群时失败:

  • 没有崩溃

  • 没有例外

  • 程序刚刚退出!

      public Job GetJobById(int jobId)
      {
          using ManagerContext context = new ManagerContext(_callContext);            
          Job job = context.Jobs.Where(j => j.Id == jobId).FirstOrDefault();
          return job;
      }
      public async Task<List<Job>> GetJobs(Expression<Func<Job, bool>> expression = default)
      {            
          using ManagerContext context = new ManagerContext(_callContext);           
          IQueryable<Job> jobs;
          if (expression == default)
              jobs = context.Jobs;
          else
              jobs = context.Jobs.Where(expression);           
          return await jobs.ToListAsync();
      }
    

分析: 调用 Job job = context.Jobs.Where(j => j.Id == jobId).FirstOrDefault(); 有效并返回值。

写入异步的相同请求 return await jobs.ToListAsync(); 静默失败。

如果你看下图,你会发现调用后的代码没有被调用,我们也没有进入catch。

程序直接退出而没有崩溃。

【问题讨论】:

    标签: .net-core entity-framework-core


    【解决方案1】:

    解决了。

    堆栈跟踪顶层的调用是非阻塞的,程序刚刚正常退出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多