Я пытаюсь реорганизовать свое приложение из репозитория для каждой сущности в репозиторий для каждого совокупного корня.
Базовый пример: у меня есть корень сущности Cars. У автомобилей есть договоры аренды. Насколько я понимаю, контракты не существуют без автомобилей, поэтому автомобили - это совокупный корень.
Я пытаюсь реализовать пользовательское представление, которое будет отображать каждый контракт в системе (все дочерние сущности корневых сущностей). Перед рефакторингом я мог просто зайти в свой репозиторий контрактов и получить All. Поскольку репозиторий контрактов был удален (поскольку он не является корневым), мне теперь нужно вытащить все машины из моего репозитория, а затем получить все их контракты.
У моего репозитория есть интерфейс
public interface ICarRepository
{
IQueryable<Car> All { get; }
IQueryable<Car> AllIncluding(params Expression<Func<Car, object>>[] includeProperties);
Car Find(long id);
void InsertOrUpdate(Car car);
void Delete(long id);
void Save();
}
Я подумал о создании ICarManagementService и о том, чтобы у него был метод GetAllContracts (возможно, с параметрами фильтра). Означает ли это, что мне нужно получить все контракты, вытащить все автомобильные объекты со своими контрактами, а затем извлечь все объекты, связанные с контрактами на аренду, и отфильтровать их?
Затем я могу передать их контроллеру и автоматически сопоставить контракты, как и раньше.
Это лучшая практика?
Спасибо
Грэм