Собственно, есть модели данных которые заданы третьей стороной, их много. Особенностью этих моделей является то, что сущности могут в себе содержать другие сущности, которые так же отображаются на БД. Вот один из примеров:
public class Region
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
[ForeignKey(nameof(ParentId))]
public Region Parent { get; set; }
}
И в случае вставки региона второго уровня возникает ошибка:
System.InvalidOperationException: "The instance of entity type 'Region' cannot be tracked because another instance with the key value '{id: 1}' is already being tracked. When attaching existing entities, ensure that only one entity instance with a given
key value is attached."
Что можно сделать в такой ситуации? Учитывая сложность структуры, можно пожертвовать производительностью.
В качестве СУБД используем PostgreSQL, если это можно с UPSERT решить, то вообще здорово.