为多对多关系添加项目时,我收到此错误
gEchoLu.dll 中出现“System.NullReferenceException”类型的异常,但未在用户代码中处理
没有进一步的细节。
以下是引发异常的代码:
protected void btn_AddMembers_Click(object sender, EventArgs e)
{
gEchoLuDBContext _db = new gEchoLuDBContext();
int wallId = Convert.ToInt32(grd_Walls.SelectedDataKey.Value);
DiscussionWall selectedWall = _db.DiscussionWalls.Single(dw => dw.WallId == wallId);
foreach (ListItem item in cbList_AllMembers.Items)
{
if (item.Selected)//if the checkbox item (i.e., user) is selected
{
Person selectedPerson = _db.People.Single(p => p.Id == item.Value.ToString());
//then retrieve the user from db
selectedWall.Members.Add(selectedPerson);//**this line throws the error**
//add user to the selected wall
}
}
_db.SaveChanges();
BindWallMembers();
}
在上面的代码中,当我调试它时,我看到没有一个实例 (selectedWall
和selectedPerson
) 为空。以下是相关类的相关部分以及它们之间的关系:
public class DiscussionWall
{
[Key]
public int WallId { get; set; }
public List<Person> Members { get; set; }
}
[Table("AspNetUsers")]
public class Person : IdentityUser
{
public List<Course> RegisteredCourses { get; set; }
public List<DiscussionWall> AttendedDiscussionWalls { get; set; }
}
流畅的api代码:
modelBuilder.Entity<DiscussionWall>()
.HasMany(dw => dw.Members)
.WithMany(p => p.AttendedDiscussionWalls)
.Map(m => m.MapLeftKey("WallId").MapRightKey("Id")
.ToTable("EnrollmentsToDiscussionWalls"));
有谁知道我的逻辑和代码有什么问题?