1. Не соглашусь с идеей "одна entity-один контроллер", так как сущности из EF далеко не всегда 1-в-1 маппятся на сущности твоего api
2. Проблема с DI логична, но далеко не всегда является проблемой. При достаточном желании можно настроить всё так, что у тебя все объекты, включая контроллеры и DAL будут Singletone (на одном проекте мы так сделали и это сильно увеличило производительность и снизило нагрузку на память).
Но вообще да - если у тебя в контроллере очень много зависимостей и в разных методах используются разные наборы этих зависимостей - значит что-то идёт не так и надо разделять (но не факт).
Помни ещё, что кроме инъекции в конструктор можно инжектить в параметры метода при помощи атрибута [FromServices]
3. Я предпочитаю группировать по сущностям api.
Тоесть если у меня будут сущности /orders, /items, то тогда у меня будет два контроллера: OrdersController и ItemsController - это упрощает поддержку и делает расположение методов логичным и очевидным.
=> Тактика по разбиению SignInController из вопроса будет зависеть от того, по каким url доступно каждое из его действий.
Ну и ещё наброшу:
Существует minimal api в котором нет контроллеров
https://learn.microsoft.com/en-us/aspnet/core/fund...
https://github.com/CarterCommunity/Carter
Существует практика создавать для каждого endpoint - свой класс.
https://github.com/ardalis/ApiEndpoints