То есть, сервисы для получения данных остаются. А в классах только бизнес логика.
Хорошо.
Вот добавляю я пользователю роли. user.AddRoles(roles)
Внутри метода всякие проверки.
И, в итоге, формирование списка изменений, которые надо применить или откатить, в зависимости от того, успешная или нет транзакция.
да, у нас есть доменные сущности в которых находится бизнес-логика и адаптеры, которые отвечают за связь между доменом и внешним миром. чистая архитектура.
ну тут есть разные варианты, можно записывать список изменений и потом транзакций накатывать, можно тупо снепшотом обновлять