【问题标题】:Compile time error while using SingleOrDefault()使用 SingleOrDefault() 时出现编译时错误
【发布时间】:2018-12-03 12:20:32
【问题描述】:

我收到编译时错误:“产品不包含 GetAwaiter 的定义”,代码如下。我不知道为什么,请有人帮助我!谢谢!!

public async Task<IActionResult> Edit(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }
        ProductsVM.Products =  await _db.Products.Include(m => m.SpecialTags).Include(m => m.ProductTypes).SingleOrDefault(m => m.Id == id);
        if (ProductsVM.Products == null)
        {
            return NotFound();
        }
        return View(ProductsVM);
    }

【问题讨论】:

  • 为什么 await 在同步呼叫中?删除那个
  • 抱歉代码不完整。这是我的异步函数:public async Task Edit(int?id) { if (id == null) { return NotFound(); ProductsVM.Products = await _db.Products.Include(m => m.SpecialTags).Include(m => m.ProductTypes).SingleOrDefault(m => m.Id == id); if (ProductsVM.Products == null) { return NotFound(); } 返回视图(ProductsVM); }
  • 你好。请借此机会阅读How to Ask。您可以编辑问题以更新问题中的代码,使其格式正确。如您所见,将代码放入 cmets 会产生不可读的代码。另外,请始终提供minimal reproducible example

标签: c# asynchronous asp.net-core-mvc


【解决方案1】:

您没有使用异步版本的 LINQ,因此没有什么可等待的,这会导致该错误。以下是可用于 LINQ 的许多异步方法的概述:
https://docs.microsoft.com/en-us/dotnet/api/system.data.entity.queryableextensions?view=entity-framework-6.2.0

编辑:
它包含一个应该可以工作的 SingleOrDefaultAsync() 版本

【讨论】:

  • 谢谢!!救了我的命!
猜你喜欢
  • 1970-01-01
  • 2020-09-19
  • 2013-06-16
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多