Я получил то же исключение, когда у меня был уникальный индекс, AddRange не удалось выполнить для уникального индекса, а затем внутри блока исключений catch была попытка удалить всю вставленную коллекцию.
(Не мой код, но я должен был это исправить :-))
Пример кода (упрощенно):
try {
context.AddRange(users); // List<User>, has property List<Contact>
context.SaveChanges(); // throws exception on unique index
} catch (Exception ex) {
context.RemoveRange(users); // this throws exception "The property 'UserID' on entity type 'Contact' has a temporary value"
throw;
}
Я думаю, что вы пытаетесь сделать то же самое (внутренне) по-другому. Просто используйте транзакции вместо взлома EF.