实体框架以多对多关系将现有子项分配给父级

时间:2017-08-01 05:32:36

标签: c# entity-framework

我想为课程分配一个现有儿童obj天的列表。但我得到PK问题或重复行。由于Days可以被选中或取消选中,我应该首先删除所有内容,然后最后添加所有内容。

Course()
{
  int Id {get;set;}
  string Descripcion {get;set;}
  List<DayOfWeek> Days {get;set;}
}

DayOfWeek()
{
 int Id {get;set;}
 string Name {get;set;}
 List<Course> Courses {get;set;} //Just for Entity Framework to create the many-to-many relation
}

其他信息

  
      
  • 代码优先
  •   
  • 延迟加载
  •   
  • 已断开连接(存储库/服务器webapi层,UI层)
  •   
  • 实体和dto对象,例如课程映射到CourseData上的UI,反之亦然。
  •   

当我附加一个新对象时,它被设置为ADDED,我需要修复

1 个答案:

答案 0 :(得分:0)

我建议在DayOfWeek实体中映射您的外键:

DayOfWeek()
{
 int Id {get;set;}
 int CourseId {get;set;}
 string Name {get;set;}
}

然后你可以这样做:

context.Set<Course>().Add(course);
dayOfWeek.CourseId = course.Id;
context.Set<DayOfWeek>().Attach(dayOfWeek);
context.Entry(dayOfWeek).State = EntityState.Modified;
context.SaveChanges();

如果您映射外键,那么EF的生活会更轻松。