У меня проблема при использовании .AttachRange()
со списком объектов, сопоставленных с DTO. Этот код работал с предыдущей версией EF Core. В GitHub существует проблема - Объект уже отслеживал исключение для объекта с несколькими ссылками на одно и то же свойство навигации # 20116
.AttachRange()
выдает ошибку:
The instance of entity type 'School' cannot be tracked because another instance with the same key value for {'SchoolId'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached.
Я знаю, как исправить этот пример, но если у вас много свойств FK и, например, список сущностей и у них также много свойств FK, то это будет сложно.
Кто-нибудь понял как это сделать правильно ?
public class School
{
public int SchoolId { get; set; }
public string Name { get; set; }
}
public class Student
{
public int StudentId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public School School { get; set; }
}
var studentsDtos = new List<StudentDTO>
{
new StudentDTO
{
FirstName = "FirstName 1",
LastName = "LastName 1",
School = new SchoolDTO
{
SchoolId = 1
}
},
new StudentDTO
{
FirstName = "FirstName 2",
LastName = "LastName 2",
School = new SchoolDTO
{
SchoolId = 1
}
}
};
var students = mapper.Map<List<Student>>(studentsDtos);
db.Students.AttachRange(students);
db.SaveChanges();