HellWalk: конечно есть, на преобразование данных в объект тратятся ресурсы так что Query шустрее будет, но на маленьких объемах данных Вы этого не заметите
AnjeyTsibylskij: они как раз и предназначены для решения Вашей задачи, поэтому рекомендую все таки посмотреть в эту сторону. Сейчас у Вас поиск по 6 таблицам, потом изменяться бизнес требования и таблиц станет больше + еще ж нужно релевантность учитывать. В общем изобретения своего способа довольно не универсальная вещь грозящая гемором в будущем
TimeCoder: Вы не много не правильно поняли.... У Вас есть IUser который принадлежит слою данных, у Вас есть скажем UserDTO который принадлежит слою сервисов. Слой API получает/передает DTO в слой сервисов, слой сервисов в свою очередь производит маппинг IUser и наоборот. Естественно что это создаст некоторый оверхед(хотя думаю не сильно большой), но по другому независимости слоев не добиться...