gpt4 book ai didi

c# - 使用多对多关系添加对象 Entity Framework

转载 作者:行者123 更新时间:2023-11-29 18:08:35 25 4
gpt4 key购买 nike

我有一个数据库,比如一个学生类和一个类(class)类。这两个表通过连接表建立多对多关系,保存这两个表的 id,这些表按预期方式隐藏在 EF 中。

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

但是,当我添加另一个学生时,在相同的两个类(class)中说“鲍勃”。 Bob.classes.Add(math); Bob.classes.Add(physics);它应该在学生表中添加一行,添加 Bob,并在 StudentCourses 连接表中添加两行。这不会发生。一行已添加到学生表中,但没有行添加到 StudentCourses 表中,从而导致类(class)表中出现重复条目​​错误。 Entity Framework 不会添加类(class),因为类(class)表中已经存在数学和物理,但它应该在 StudentCourses 连接表中添加两个条目。

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

最佳答案

我解决了这个问题

team ct = context.teams.Find(club.id);

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

context.SaveChanges();

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

关于c# - 使用多对多关系添加对象 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603356/

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