Для меня, во-первых, вы должны подумать о том, чтобы использовать какую-то подкачку данных, потому что наличие такого списка размером в 1 миллион элементов само по себе может быть опасным.
Вы можете реализовать его так, чтобы вы отмечали объекты для создания, обновления или удаления, а затем вызывали «SaveChanges», «Commit» или любую другую, выполняющую «применить изменения», и вы получитеготово.
Например, вы перебираете перечисляемый объект (oldList) и помечаете их как «удалить».Позже вы вызываете «SaveChanges», и более абстрактная, общая единица работы будет перебирать небольшой отфильтрованный список объектов для работы.
Во всяком случае, избегайте списков миллионов предметов.Вы должны работать с постраничными списками объектов.