Композиция объектов компонентов NEventStore для DI

Я добавляю NEventStore в свой существующий проект и использую DI.

Я хотел бы иметь экземпляр CommonDomain.Persistence.EventStore.IRepository введен в мой контроллер MVC. Единственная реализация этого интерфейса EventStoreRepository,
Этот класс зависит от IConstructAggregates и единственная реализация, которую я нахожу, AggregateFactory который помечен как внутренний, находится в тестовом проекте и имеет очень странное имя файла.

Я не должен использовать IRepository? (почему он помечен как общедоступный и не используется внутренним кодом?)
Я ищу пример проекта здесь и IRepository используется для манипулирования агрегатами.

Или я должен реализовать IConstructAggregates себя?

1 ответ

Решение

Я борюсь с тем же, я думаю, что короткий ответ:

Если вы не используете снимки, реализация в тестовом проекте будет работать нормально. На самом деле, я бы добавил немного кода, чтобы вызвать исключение, если бы вам дали снимок.

Если вы используете моментальные снимки, вам придется использовать подход, аналогичный описанному в конце описанного здесь: http://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/

По сути, проблема в том, что для объекта, который вы вернете из IConstructAggregates, будет воспроизведен поток событий, начиная с версии, следующей сразу за переданным снимком.

Просто предположение, но я думаю, что причина, по которой это не может быть "официально" реализовано в CommonDomain:

  • Если у вас есть агрегаты, которые поддерживают моментальные снимки, вы должны реализовать GetSnapshot() на них в любом случае, и вы бы хотели построить IConstructAggregates реализация, которая может повторно гидратировать эти агрегаты как-то (возможно, ISupportSnapshots интерфейс?)

  • Вполне возможно, что вы захотите использовать свой DI-контейнер для создания вашего Aggregate, а не просто Activator.CreateInstance<T>(),

Похоже, этот фрагмент кода использует ту же логику, что и AggregateFactory из тестового проекта: - http://pastebin.com/cFESMiTz

Другие вопросы по тегам