G>Т.е. AddASync таки лезет в базу, и именно так мне назначенный ID и прилетает до SaveChanges?
Лезет AddAsync в БД или нет зависит от того, как настроен DB-контекст.
В частности, от выбранной стратегии установки identity для сохраняемой entity.
Если используется генерация на уровне БД (например, IDENTITY column в MS SQL), то похода в БД не будет, но Id будет 0 до вызова SaveChanges.
Если используется SequenceHiLo или просто Sequence, то поход в БД может быть, а может не быть. Если, например, шаг sequence = 5, то первые пять вызовов пройдут без похода в БД, затем будет один поход для получения текущего значения sequence и следующие 5 вызовов снова будут без похода в БД.
Если же ID назначается пользовательским кодом (например это Guid или какой-то глобальный shared счетчик или какая-то еще кастомная стратегия), то похода в БД опять же не будет.