Формировать в сервисном слое ORM модель и передавать ее в репо - плохая идея:
1. Часто приводится аргумент «а вот захочешь ты сменить реляционную БД на nosql и тогда сервисный слой придется переписывать». И хоть это и редкий кейс, тем не менее стоит держать его в голове. Избегайте протекание логики работы с БД в сервисный слой.
2. Само название DTO содержит цель этой сущности - гонять данные между функциями/слоями. Модель ORM это более сложный и более специфичный объект. 
Насчет передачи словаря в репо из сервиса тоже есть сомнения:
1. DTO обеспечивает валидацию данных, автодополнение кода, типизацию и еще много что на самом деле - можно писать свои методы, реализующие необходимую логику. Словари - нет. 
2. Если вы уже описали DTO, то немного странно использовать его только для передачи данных из роута в сервис. Почему бы тогда не использовать его и для передачи из сервиса в репо?
Резюмируя - передавайте данные между слоями в DTO, в обоих направлениях.