Скорее всего циклическая зависимость образуется при попытке сериализации класса входного параметра. Вот статься на эту тему https://docs.microsoft.com/ru-ru/ef/core/querying/related-data/serialization А по поводу советов о "правильной архитектуре и как надо" лучше делай как умеешь, покуда приложение не заработает и уже после этого внедряй "нововведения".