static void Main(string[] args) { //var personReadModel = new MongoRepository<PersonDTO>("mongodb://localhost", "DDD_Light_MongoEventStore_Example", "Person_ReadModel"); //var aggregateEventRepo = new MongoRepository<AggregateEvent>("mongodb://localhost", "DDD_Light_MongoEventStore_Example", "EventStore"); var personReadModel = new InMemoryRepository<PersonDTO>(); var aggregateEventRepo = new InMemoryRepository<AggregateEvent>(); CQRS.Light.Core.EventStore.Instance.Configure(aggregateEventRepo, new JsonSerializationStrategy(), AggregateBus.Instance); EventBus.Instance.Configure(CQRS.Light.Core.EventStore.Instance, new JsonSerializationStrategy(), false); AggregateBus.Instance.Configure(EventBus.Instance, AggregateCache.Instance); EventBus.Instance.Subscribe(async (PersonCreated personCreated) => { var personDTO = new PersonDTO {Id = personCreated.Id}; await personReadModel.SaveAsync(personDTO); }); EventBus.Instance.Subscribe(async (PersonNamed personNamed) => { var personDTO = await personReadModel.GetByIdAsync(personNamed.PersonId); personDTO.Name = personNamed.Name; personDTO.WasRenamed = false; await personReadModel.SaveAsync(personDTO); }); EventBus.Instance.Subscribe(async (PersonRenamed personRenamed) => { var personDTO = await personReadModel.GetByIdAsync(personRenamed.PersonId); personDTO.Name = personRenamed.Name; personDTO.WasRenamed = true; await personReadModel.SaveAsync(personDTO); }); NamePerson(personReadModel).ConfigureAwait(true); NameAndRenamePerson(personReadModel).ConfigureAwait(true); Console.ReadLine(); }