使用多对多关系添加对象实体框架

时间:2017-12-02 00:33:19

标签: c# mysql asp.net-mvc entity-framework

我有一个数据库,比如说一个班级学生和一个班级课程。这两个关系通过连接表有多对多关系,保存这两个表的id,它们以EF的方式隐藏在EF中。

首先,如果我向学生添加两门课程。喜欢     John.classes.Add(math); John.classes.Add(physics)其中' John',数学和物理是他们各自课程的对象。当我保存更改时,一切都会以应有的方式发生。学生表中的条目,课程表中的两个条目和StudentCourses联接表中的两个条目。都好。

然而,当我添加另一名学生说“鲍勃”时。有两个类。 Bob.classes.Add(math); Bob.classes.Add(physics);它应该在学生表中添加一行,在StudentCourses联接表中添加Bob和两行。这不会发生。学生表中添加了一行,但没有向StudentCourses表添加任何行,从而在课程表中显示重复条目错误。实体框架不添加课程,因为数学和物理已经存在于课程表中,但它应该在StudentCourses连接表中添加两个条目。

解决这个问题的方法是在连接表中添加一个id列,并将此表用作普通表,并在StudentCourses表中手动添加条目。但我不想这样做,我想知道实际的解决方案。 this is table schema. Join table is hidden as per EF rules. 感谢

1 个答案:

答案 0 :(得分:0)

我通过

解决了这个问题
team ct = context.teams.Find(club.id);

if (ct == null)
{ comp.teams.Add(club); }
else
{ ct.competitions.Add(comp); }

context.SaveChanges();

其中comp是竞争对象。 我相信这不是实际的解决方案,而只是一种解决方法。这不可能......