[我知道在将实体从一个DbContext复制到另一个DbContext时如何防止重复,我的问题是关于其子代的。
DbContextHDD
和DbContextUSB
,它们都包含一个“数学” Course
。DbContextHDD
还包含:
Course
。Student
的Course
“西蒙”。Student
的Course
“杰克”。我想将所有Student
实体从DbContextHDD
复制到DbContextUSB
,并且还包括Course
中尚不存在的任何DbContextUSB
实体:
var students = DbContextHDD.Students.Include(s => s.Courses).ToList();
DbContextUSB.Students.AddRange(students);
DbContextUSB.SaveChanges();
这还会将“数学”和“历史记录”Course
实体从DbContextHDD
复制到DbContextUSB
。
在Students.AddRange
之后,我在Course
中有两个“数学” DbContextUSB.Courses.Local
实体,它们都具有相同的CourseId
,而SaveChanges
都以SQLiteException: UNIQUE constraint failed
失败。
Configuration.ProxyCreationEnabled = false;
我有很多对很多关系:
public class Student
{
public Student()
{
this.Courses = new HashSet<Course>();
}
public int StudentId { get; set; }
[Required]
public string StudentName { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
public Course()
{
this.Students = new HashSet<Student>();
}
public int CourseId { get; set; }
public string CourseName { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
编辑:我知道在将实体从一个DbContext复制到另一个DbContext时如何防止重复,我的问题是关于其子代的。我有两个上下文:DbContextHDD和DbContextUSB,它们都...