. NET Core - Где хранить модели совместно с несколькими Repos / API? - PullRequest
1 голос
/ 24 января 2020

У меня следующая структура проекта:

Solution
--API (serves data to front ends)
--Postgres Repository (contains connection string, methods for getting data for DB, and models)
--API Tests

Я добавляю еще один репозиторий

--SQL Repository

Модели из репозитория Postgres используются API (с помощью операторов ). Теперь у меня будут модели, совместно используемые репозиторием SQL, репозиторием Postgres и API. В идеальном мире, где эти модели должны быть определены? В отдельном проекте? В API? Дублированы?

Редактировать: Чтобы получить более четкую картину, у нас есть модель Job. IEnumerable<Job> будет извлечено из SQL, обработано и сохранено в Postgres. Где должна жить совместно используемая модель Job?

В долгосрочной перспективе эти репозитории будут использоваться в нескольких API, если это имеет значение.

1 Ответ

1 голос
/ 24 января 2020

Использование одних и тех же классов для вашего API, двух разных технологий хранения данных и бизнес-логики c - это дорога в ад. Скоро у вас будут атрибуты, указывающие c на ваши SQL столбцы, возникнут проблемы, поскольку ваш класс должен быть сериализуемым для вашего API, свойства, которые не должны быть сохранены, и т. Д. c.

Использовать спецификацию c классов для вашего уровня хранения, вы, вероятно, можете поделиться своими бизнес-моделями между вашими API, и неплохо было бы указать c моделей для ваших API.

Принцип единой ответственности: https://en.wikipedia.org/wiki/Single_responsibility_principle

Слои: https://martinfowler.com/bliki/PresentationDomainDataLayering.html

Вы можете использовать Automapper, если чувствуете, что картирование требует слишком много усилий: https://docs.automapper.org/en/stable/Getting-started.html

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