Вот где я до.
У меня есть общий класс репозитория Repository<TKey, TValue>
. У него есть обычные методы репозитория.
Каждый репозиторий занимает IContext<TKey, TValue>
в своем конструкторе, который обеспечивает постоянство для репозитория.
У меня есть специализированные репозитории, которые состоят из общего репозитория, а затем методов, адаптированных к действиям репозитория, которые являются специфическими для специализированного объекта. Поэтому, если бы у меня был специализированный репозиторий для объектов Kitten, у него были бы методы для ClimbTree (возможно, с использованием объекта дерева), но не метод BuryBone (Bone bone). Суть, которую я подчеркиваю, заключается в том, что она создает связь между котенком и его деревом, которое необходимо сохранить. void CleanWhiskers()
может быть более простым примером. Это устанавливает чистоту усов котят.
Итак, я сейчас думаю о схеме сохранения связанных дочерних объектов и начинаю задумываться, не ошибаюсь ли я уже.
Я начал с некрасивых методов в хранилище для создания дочерних объектов. Таким образом, хранилище Kitten будет иметь метод CreateFurBall()
, который добавит объект FurBall в коллекцию FurBall котенка и добавит Furball в хранилище FurBall для сохранения (фактически тот же объект).
Теперь я перешел на систему, где у меня есть что-то похожее на ObservableCollection, которая уведомляет свой родительский репозиторий при добавлении POCO. Так что я могу просто создать POCO Furball и добавить его в коллекцию, которая затем будет автоматически зарегистрирована в репозитории FURBOL.
Прежде всего, я буду реализовывать nHibernate в контекстах, я думаю, что это довольно хорошо. Это действительно открытый вопрос, для любого, кто был на этом пути раньше, вы можете увидеть что-нибудь, что заставляет вас «ОСТАНОВИТЬСЯ !!»