gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:35 25 4
gpt4 key购买 nike

我有一个我不知道的错误,因为除了说对象引用未设置为对象错误的实例之外,它没有提供任何详细信息。我在 Person 和 Course 类之间存在多对多关系,定义如下。当我尝试向类(class)添加新人员(即,为类(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();

这是 Person 类:

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 类中关系的定义:

 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>();
}

关于c# - "Object reference not set to an instance of an object error"添加具有 Entity Framework 多对多关系的项目时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28790437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com