Я учусь проектированию на основе домена. В настоящее время я пытаюсь написать простое приложение на C#, проектируя его с помощью DDD. Это приложение имеет совокупный корень A, который может содержать 0...n подсубъектов B. Это может быть представлено чем-то вроде:
class A {
public int Id { get; }
public IList<B> { get; }
}
с репозиторием:
class ARepository {
public A Get(int id) { ... }
public void SaveOrUpdate(A root) { ... }
public void Delete(A root) { ... }
}
Я хотел бы, однако, добавить подкастывание при представлении подсубъектов B для данного экземпляра A. Как бы я это сделал? Лучшее, что я могу придумать, это изменить A и ARepository на что-то вроде:
class A {
public int Id { get; }
}
class ARepository {
public A Get(int id) { ... }
public void SaveOrUpdate(A root) { ... }
public void Delete(A root) { ... }
public IList<B> GetBForA(A root, int offset, int pageSize, out int numPages) { ... }
}
Это, конечно, сработает, но я потеряю простоту и элегантность доменной модели.
Какова лучшая практика работы с пейджингом суб-субъектов с шаблоном репозитория? Я не ищу, как с этим справиться, используя определенные библиотеки и т.д., а скорее способ справиться с этим на "уровне шаблона".