You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DbSet<T>无GetAwaiter定义错误原因排查求助

EF Core异步查询报错:DbSet不存在GetAwaiter方法

我正在学习Contoso University的MVC版教程,该教程归类在.NET 7文档下,但实际基于.NET 5开发。目前推进到「更新关联数据」模块,在EditPost方法中添加以下代码时出现红色波浪线错误:

var courseToUpdate = await _context.Courses;
        .FirstOrDefaultAsync(c => c.CourseID == id);

错误提示

'DbSet' does not contain a definition for 'GetAwaiter' and no accessible extension method 'GetAwaiter' accepting a first argument of type 'DbSet' could be found (are you missing a using directive or an assembly reference?)

我尝试注释掉.FirstOrDefaultAsync(c => c.CourseID == id);,仅保留var courseToUpdate = await _context.Courses;一行,仍然报相同错误。此前已经完成教程的7个模块,DbContext一直正常工作。

课程控制器已导入以下命名空间:

  • using ContosoUniversity.Data; // 引入DbContext
  • using ContosoUniversity.Models; // 引入Course实体类

完整POST Edit方法代码

[HttpPost, ActionName("Edit")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> EditPost(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    var courseToUpdate = await _context.Courses;
            //.FirstOrDefaultAsync(c => c.CourseID == id);

    if (await TryUpdateModelAsync<Course>(courseToUpdate,
            "",
            c => c.Credits, c => c.DepartmentID, c => c.DepartmentID, c => c.Title))
    {
        try
        {
           await _context.SaveChangesAsync();
        }
        catch (DbUpdateException /* ex */)
        {
            // Log the error (uncomment ex variable name and write a log.)
            ModelState.AddModelError("", "Unable to save changes. " +
                "Try again, and if the probelem persists, " +
                "see your system administrator.");
        }
        return RedirectToAction(nameof(Index));
    }
}

DbContext完整代码

using ContosoUniversity.Models;
using Microsoft.EntityFrameworkCore;

namespace ContosoUniversity.Data
{
    public class SchoolContext : DbContext
    {
        public SchoolContext(DbContextOptions<SchoolContext> options)
            : base(options)
        {
        }

        public DbSet<Course> Courses { get; set; }
        public DbSet<Enrollment> Enrollments { get; set; }
        public DbSet<Student> Students { get; set; }
        public DbSet<Department> Departments { get; set; }
        public DbSet<Instructor> Instructors { get; set; }
        public DbSet<OfficeAssignment> OfficeAssignments { get; set; }
        public DbSet<CourseAssignment> CourseAssignments { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Course>().ToTable("Course");
            modelBuilder.Entity<Enrollment>().ToTable("Enrollment");
            modelBuilder.Entity<Student>().ToTable("Student");
            modelBuilder.Entity<Department>().ToTable("Department");
            modelBuilder.Entity<Instructor>().ToTable("Instructor");
            modelBuilder.Entity<OfficeAssignment>().ToTable("OfficeAssignment");
            modelBuilder.Entity<CourseAssignment>().ToTable("CourseAssignment");

            modelBuilder.Entity<CourseAssignment>()
            .HasKey(c => new { c.CourseID, c.InstructorID });

        }
    }
}

我从未遇到过这类错误,搜索后发现相关案例大多针对Task或Task,而非DbSet。想问问有没有人遇到过直接返回DbSet集合时出现此错误的情况?


更新进展

我直接复制教程中的POST Edit代码,清理并重建项目后,红色波浪线仅出现在代码块末尾,但项目编译已成功。后续会继续完成教程内容,观察问题是否会自行解决。

代码错误提示截图

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:45:35