我正在构建一个.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 识别该方法?
回答1
您必须在 db 上下文代码中包含一个 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);