У меня есть большая кодовая база, и, к сожалению, я не могу воспроизвести ее на небольшом примере кода, но я вроде как делаю это:
db.Persons.Add(new Person() {Name = "Foo"});
await db.SaveChangesAsync()
await db.Persons.FromSql("truncate table Persons;select top 0 * from Persons").ToListAsync();
db.Persons.Add(new Person() {Name = "Bar"});
await db.SaveChangesAsync()
И в конечном итоге с этой ошибкой на последних изменениях сохранения:
System.InvalidOperationException: экземпляр типа сущности 'InstructionLineAllocationDto' не может быть отслежен, поскольку другой экземпляр с таким же значением ключа для {'Id'} уже отслеживается.
ЯПомните, что усечение немного нестандартно. Поле Id, содержащееся в ошибке, является полем Identity в базе данных, которое меня не особо волнует.
Я не могу найти места, объясняющие, как реализовать промежуточные таблицы, где вы часто усекаете и вставляете связку иэтот код также не был бы проблемой, если он запускался один раз за tuncate. (Но это слушатель, который всегда активен)
Так что все ответы, которые запускаются постоянно и иногда вставляют много и усекаются, но всегда активны, интересны.
Но мой самый конкретный вопрос:как я могу это сделать без какого-либо отслеживания изменений
Код - EntityFrameworkCore SqlServer 2.0.0