【发布时间】:2021-05-15 12:32:38
【问题描述】:
一个老师可以有很多科目,反之亦然,一个科目可以有很多老师。也就是说,这里是 mtm((ef > 5.0)。这正是我所做的。但是当添加新教师时,会创建新科目。如何解决这个问题?
添加教师之前
- 化学
- PE
- 生物学
然后我要添加一位新老师
// for example subjects = ["Biology", "Chemistry"]
await _db.Teachers.AddAsync(new Teacher
{
...
Subjects = subjects,
});
添加老师后
- 化学
- PE
- 生物学
- 化学
- 生物学
教师模式
public class Teacher : User
{
public string Name { get; set; }
public string Surname { get; set; }
public IList<Subject> Subjects { get; set; }
}
用户模型
public class User
{
public int Id { get; set; }
public string Login { get; set; }
}
主题模型
public class Subject
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<Teacher> Teachers { get; set; }
}
【问题讨论】:
-
@Larnu 好的,我会修复它
-
主题来自哪里?您必须先从数据库中提取现有科目,然后将它们添加到教师的现有科目列表中(一种方法)。
-
-
@olegshmel 在您保存的同一个 DbContext 实例中,您检索要添加的主题(不禁用跟踪)。您不会像您所做的那样为主题设置新列表。您从 DbContext 获取当前列表,然后添加您之前检索到的新列表。这不会尝试保存“新”主题。
标签: c# sql sql-server database entity-framework