Проблема с отслеживанием с EF Core 3 и Automapper - PullRequest
1 голос
/ 20 марта 2020

У меня проблема при использовании .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();
...