EF Core "Экземпляр типа сущности 'X' не может быть отслежен, потому что другой экземпляр с тем же ключом ..." - PullRequest
0 голосов
/ 11 мая 2018

Итак, я получаю следующее сообщение об ошибке:

Не удается отследить экземпляр типа сущности 'X', поскольку уже отслеживается другой экземпляр с таким же значением ключа для {...}

Это происходит, когда мы объединяем коллекцию подпунктов.В EF 6 следующий шаблон будет работать нормально:

dbContext.Items.RemoveRange(owner.Items);
owner.Items = newItems.Select(i => dbContext.Items.Add(new Item(i)).ToList();

В EF Core это не работает для элементов с составным ключом.Я предполагаю, что удаленные элементы помечены для удаления, но все еще отслеживаются.Поэтому, когда новые с совпадающим составным ключом добавляются , SaveChanges () завершается ошибкой, поскольку отслеживаются 2 объекта с одинаковым идентификатором.

Итак, можно ли предположить, что приведенный выше шаблон долженбольше не используется и вместо этого правильно объединяет элементы, например, используя полное внешнее объединение?

Или есть ли способ заставить его работать как в EF 6?

...