Опитвам се да преработя приложението си от хранилище за обект в хранилище за сборен корен.
Основен пример би бил, че имам корен на обект на Cars. Автомобилите имат договори за наем. Доколкото виждам, договорите не съществуват без автомобили, следователно автомобилите са обобщеният корен.
Опитвам се да внедря потребителски изглед, който ще показва всеки договор в системата (всички дъщерни обекти на основните обекти). Преди рефакторинг можех просто да отида в моето хранилище на договори и да взема All. Тъй като хранилището за договори беше премахнато (тъй като не е root), сега трябва да извадя всички автомобили от моето хранилище и след това да получа всичките им договори.
Моето хранилище има интерфейса
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 (може би с параметри на филтъра). Това би означавало, за да получа всички договори, от които се нуждая, да извадя всички автомобилни субекти с техните договори и след това да извлека договорите за наем на всеки субект, свързани с тях, и да ги филтрирам?
След това мога да ги предам на контролера и AutoMap на договорите, както преди.
Това ли е най-добрата практика?
Благодаря
Греъм