"Object reference not set to an instance of an object error" 添加具有 Entity Framework 多对多关系的项目时

"Object reference not set to an instance of an object error" when adding an item with Entity Framework Many-To-Many relationship

我有一个我不知道的错误,因为除了说对象引用未设置为对象错误的实例之外,它没有提供任何详细信息。 Person 和 Course class 之间存在多对多关系,定义如下。当我尝试向课程添加新人员(即,为课程注册学生)时,我在执行 Linq 语句的行中遇到错误。我提供了代码的相关部分如下:

这是抛出错误的代码:

Person userToRegister = _db.People.Single(p => p.Id == i.Value);//not null when debugging

int courseId = Convert.ToInt32(drp_Courses.SelectedValue);
Course myCourse = _db.Courses.Single(c => c.CourseId == courseId);//not null when debugging

myCourse.Members.Add(userToRegister);//This line throws the error
_db.SaveChanges();

这是人 class:

public class Person : IdentityUser
{
    [Required]
    [StringLength(50, ErrorMessage = "First name cannot be longer than 50 characters.")]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    public List<Course> RegisteredCourses { get; set; }
}

这是课程 class:

public class Course
{
    public int CourseId { get; set; }

    public string CourseTitle { get; set; }

    public List<Person> Members { get; set; }
}

这里是DbContext中关系的定义class:

 modelBuilder.Entity<Course>()
                    .HasMany(c => c.Members)
                    .WithMany(p => p.RegisteredCourses)
                    .Map(m => m.MapLeftKey("CourseId").MapRightKey("Id")
                                                      .ToTable("EnrollmentsToCourse"));

我觉得一切都很完美。谁能告诉我我在这里缺少什么?

将该行更改为

Course myCourse = _db.Courses.Include(e => e.Members).Single(c => c.CourseId == courseId);

并检查

if (myCourse.Members == null)
{
    myCourse.Members = new List<Member>();
}