Как написать логику работы контролеров в Asp. net?
Делать или нет репо для БД - вкусовщина, как по мне.
EF датаконекст примерно и есть анемичный репозиторий.

Сервисы делать обязательно, и причина банальна - завтра придут к вам и попросят не MVC контроллер, а web api, soap, rabbit, graphql с gRPC и прочие интересные вещи для интеграции с другими системами (CRM, CMS, мобильное приложение и проч).
И вы будете разлеплять логику коммуникации и бизнеса.

Так что в контроллере не должно быть бизнесовой логики, только предоставление нужных данных вьюхе и получение от нее команд.
можно вот так
https://github.com/vkorotenko/StuffTest