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

vij*_*ahu 5 c# linq asynchronous entity-framework 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);
    */
 }
Run Code Online (Sandbox Code Playgroud)

进一步澄清

在此处输入图片说明

在我的项目中参考Entityframework。(.NET Core)

在此处输入图片说明

Nir*_*edi 9

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


vij*_*ahu 7

得到刚刚安装的解决方案!

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

原因 :

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

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

再次感谢。