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

内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

