Я пытаюсь заставить мой DbContext работать без отслеживания.
public class MyContext: DbContext
{
public MyContext()
{
ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
}
...
}
Кроме того, после каждого добавления (..) или обновления (..) я удаляю отслеживание нового объекта:
_context.Users.Add(user);
await _context.SaveChangesAsync();
_context.Entry(user).State = EntityState.Detached;
Проблема возникает, если я добавляю (или обновляю) новую сущность, которая имеет ссылку на уже существующую сущность (имеется в виду, что она уже сохранена в базе данных).
Например:
var section = new Section();
_context.Sections.Add(section);
await _context.SaveChangesAsync();
_context.Entry(section).State = EntityState.Detached;
...
var user = new User
{
Name = "Alex",
Section = section
}
_context.Users.Add(user);
await _context.SaveChangesAsync();
Ошибка:
System.ArgumentException: 'Элемент с тем же ключом уже добавлен. Ключ: 1 '
Как я могу это исправить?