Здравствуйте, zelenprog, Вы писали:
Z>Ты предлагаешь сделать один Репозиторий для всех Сущностей. Z>Я читал, что это неправильно. Для каждой сущности должен быть свой репозиторий. Z>У меня есть сущности "Товар", "Аналог", "Упаковка". Соответственно должно быть три Репозитория.
Почему должны? Где ты такое читал?
Z>Кроме того, этот подход по меньшей мере необычный. Z>Например, выполнив метод "TovarRepository.GetListWithAnalogAndPack" я получу три списка-коллекции?
Получишь ровно то, что напишешь в реализации метода.
Обычно возвращают то, что нужно домену. Например один список объектов, из которого можно получить и товары, и аналоги и т.п. Ну или три списка, если так нужно
Z>Обычно метод Репозитория возвращает одну коллекцию.
Репозитории существуют ДЛЯ домена. Могут возвращать хоть одну коллекцию, хоть десять. Лишь бы домену было удобно, и домен не знал детали реализации.
Можешь создать отдельный репозиторий — Tovaroiskatel (не надо такой нейминг), который будет возвращать одну коллекцию.
Z>Как минимум у меня должно быть два запроса: нужно получить список аналогов и список упаковок. Z>Хотя, в принципе я не против сделать это одним запросом. Z>Только как это "вписать" в Domain-Model?
Я выше уже сказал. Завернуть один-два-десять запросов в БД в один метод репозитория.
Z>Используется Репозиторий как обычный класс. Z>Хотя по сути он не имеет состояния. Z>То есть чисто теоретически, если его использовать не как обычный класс, а как синглтон, то никакой разницы не будет.
Состояние он имеет — как минимум, настройки для подключения к БД, ссылки на зависимости.
Плюс может добавиться еще состояние, про которое домену знать не нужно, а в реализации репозитория может быть полезно.
Ну и прочие недостатки синглтона