【问题标题】:How to use async - await in asp.net mvc 5如何使用异步 - 在 asp.net mvc 5 中等待
【发布时间】:2018-07-21 06:24:43
【问题描述】:

我是异步编程的新手。我正在研究必须使用异步等待方法模式的项目。为此,我在我的存储库项目中创建了一个方法

    public async Task<IEnumerable<InventoryProductMaster>> GetInventoryProducts(long OrganizationMasterID)
    {
        return await _msbmInventoryDbContext.Set<InventoryProductMaster>().Where(a => a.OrganizationMasterID == OrganizationMasterID);
    }

我想将此函数的结果用于我的控制器方法中。

    [HttpGet]
    public async Task<ActionResult> Create()
    {
        long organizationMasterID = Convert.ToInt64(System.Web.HttpContext.Current.Session["LoggedInOrganizationMasterID"]);
        var _materialTypeEntity = await _inventoryUnitOfWork.InventoryProductMasters.GetInventoryProducts(organizationMasterID).ToListAsync();
        return View();
    }

显示错误消息:“IQueryable”不包含“GetAwaiter”的定义,并且找不到接受“IQueryable”类型的第一个参数的扩展方法“GetAwaiter”(您是否缺少using 指令还是程序集引用?)

请帮助我。提前致谢

【问题讨论】:

  • 你不能只是await 任何方法,这不是它的工作原理。您需要回归基础并了解其工作原理。
  • 大多数异步 BCL 方法在方法名称后缀中都有 ___Async。您在 repo 中调用的方法不是因为它不是异步的。

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-5


【解决方案1】:
public async Task<IEnumerable<InventoryProductMaster>> GetInventoryProducts(long OrganizationMasterID)
{
   return await _msbmInventoryDbContext.Set<InventoryProductMaster>().Where(a => a.OrganizationMasterID == OrganizationMasterID).ToListAsync();
}

你将不得不使用这个方法,调用可能会像这样发生

var _materialTypeEntity = await GetInventoryProducts(cpount);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多