Шаблоны EF Core, Service и Repository - PullRequest
       29

Шаблоны EF Core, Service и Repository

0 голосов
/ 20 октября 2018

Просто чтобы узнать о шаблонах, я создаю свой 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
}

1 Ответ

0 голосов
/ 20 октября 2018

Я предпочитаю возвращать организации из моих служб, а не DTO.Причина в том, что иногда результат вызова службы используется для создания модели представления ASP.NET MVC, а иногда DTO для возврата в виде JSON.Иногда требования для этих DTO различны, ViewModels на стороне сервера могут видеть вещи, которые не должны быть выставлены клиенту.Вы можете создать DTO на своем сервисном уровне, но в большинстве случаев это просто еще одно сопоставление, о котором вы должны заботиться не так много.Вот почему я создаю DTO или ViewModel непосредственно из сущностей в контроллере.

Кроме того, шаблон хранилища в основном бесполезен.Это может быть полезно, если вы измените свое хранилище данных, но на практике такого рода изменения сопровождаются множеством других изменений в бизнес-логике, поэтому большая часть вашего уровня обслуживания в любом случае переписывается, поэтому значение теряется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...