Как работать с пейджингом суб-субъектов с шаблоном репозитория?

Я учусь проектированию на основе домена. В настоящее время я пытаюсь написать простое приложение на 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) { ... }
}

Это, конечно, сработает, но я потеряю простоту и элегантность доменной модели.

Какова лучшая практика работы с пейджингом суб-субъектов с шаблоном репозитория? Я не ищу, как с этим справиться, используя определенные библиотеки и т.д., а скорее способ справиться с этим на "уровне шаблона".

6
задан David Nordvall 29 August 2011 в 06:24
поделиться