如何在异步中使用FirstOrDefaultAsync()等待WEB API的

时间:2018-08-08 09:33:38

标签: c# entity-framework linq asynchronous async-await

我创建了一个.NET Core API,我的所有方法都是异步的,但是有一种要求,例如GetBalance()仅返回一个实体(记录)。

我无法使用SingleOrDefaultAsync(),出现类似的错误未包含对此的定义。

我正在使用简单的基本EF Code First方法,没有存储库模式。

这是我的代码示例。

public async Task<ResponseBalanceModel> GetBalanceFor(int accountNumber)
{
    var result = await _dbContext.Accounts.Where(x => 
             x.AccountNumber == accountNumber)
             .SingleOrDefaultAsync(); // this is not working.

    /*Below tried code are not working. 
    var result1 = await _dbContext.Accounts.Where(x => x.AccountNumber == accountNumber).SingleOrDefaultAsync();

    var result2 = await _dbContext.Accounts.FirstOrDefaultAsync(x => x.AccountNumber == accountNumber);
    */
 }

更多说明

enter image description here

在我的项目中引用Entityframework。 (.NET Core)

enter image description here

2 个答案:

答案 0 :(得分:3)

得到刚安装的解决方案!

安装包Microsoft.EntityFrameworkCore.Tools 在我的.net核心项目中,它开始工作...谢谢大家的评论。

原因:

  1. System.Linq命名空间确实支持ToListAsync(),ToAsyncEnumerable(),FindAsync()和SaveChangesAsync()

  2. 要使用FirstOrDefaultAsync()和SingleOrDefaultAsync()方法,我们必须安装此软件包。

再次感谢。

答案 1 :(得分:1)

EF Core异步扩展方法在Microsoft.EntityFrameworkCore命名空间中定义。必须导入该名称空间才能使方法可用。