Просто чтобы узнать о шаблонах, я создаю свой Web API с помощью следующих проектов: Entities, Repositories, Service и API-приложения.
Каждый контроллер в API использует внедрение зависимостей в свою соответствующую службу;каждый сервис использует DI для нескольких репозиториев;Хранилища используются для получения данных из DbContext, а сущности содержат DbContext и DbSets.
В качестве примера, скажем, что когда я вызываю конечную точку / groups / 1:
-
GetTeam(id)
функция в вызове контроллера _teamService.GetTeam(id);
- вызов службы
_teamRepository.GetTeam(id);
- хранилище выполняет вызов LINQ для
Context.Team.First(...)
a, возвращая службе модель сущности Team; - служба получает модель и сопоставляет ее с DTO, возвращающимся к контроллеру;
- контроллер передает ее приложению в формате JSON.
Этоправильный способ управления потоком?
Кроме того, представьте себе, что контроллер должен извлекать команду и все ее соревнования: правильно ли внедрять репозиторий Competition и использовать его из TeamService?Что-то вроде:
TeamService.cs
return new DTOObject {
team = _teamRepo.GetTeam(id),
competitions = _compRepo.GetCompsByTeam(id) <-- is a list
}