无法解析 .Net Core Web API 中的符号 "FirstOrDefaultAsync"

Can't resolve symbol "FirstOrDefaultAsync" in .Net Core Web API

我正在构建一个 .Net Core Web API,在其中一个文件中,FirstOrDefaultAsync() 方法不起作用,尽管我在同一项目的多个文件中使用它。我拥有所有必要的 NuGet 包和命名空间。其他 EFCore 方法(例如 SaveChangesAsync)似乎与往常一样工作。

using Microsoft.EntityFrameworkCore;

...

public async Task<NoteDetailsVm> Handle(GetNoteBodyQuery query, CancellationToken cancellationToken)
{
    var entity = await _dbContext.FirstOrDefaultAsync(note => note.Id == query.Id, cancellationToken);
    ...
}

IDE就是不认识这个方法。虽然当我输入方法名称时名称空间会高亮显示,但实际上什么也没有发生。 在同一项目的另一个文件中,我有:

using Microsoft.EntityFrameworkCore;

...

public async Task<Unit> Handle(UpdateNoteCommand request, CancellationToken cancellationToken)
{
    var entity = await _dbContext.Notes.FirstOrDefaultAsync(note =>
        note.Id == request.Id, cancellationToken);
    ...
}

一切都很完美。

如何让 IDE 识别该方法?

您必须将 ef dbset 名称包含到数据库上下文代码中

  var entity = await _dbContext.Notes.FirstOrDefaultAsync(note => note.Id == query.Id, cancellationToken);

  //or
  var entity = await _dbContext.Set<Note>().FirstOrDefaultAsync(note => note.Id == query.Id, cancellationToken);