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(); }
static void Main(string[] args) { var personReadModel = new MongoRepository<PersonDTO>("mongodb://localhost", "DDD_Light_MongoEventStore_Example", "Person_ReadModel"); EventStore.Instance.Configure(new MongoRepository<AggregateEvent>("mongodb://localhost", "DDD_Light_MongoEventStore_Example", "EventStore"), new JsonEventSerializationStrategy()); EventBus.Instance.Configure(EventStore.Instance, new JsonEventSerializationStrategy(), false); EventBus.Instance.Subscribe((PersonCreated personCreated) => { var personDTO = new PersonDTO {Id = personCreated.Id}; personReadModel.Save(personDTO); }); EventBus.Instance.Subscribe((PersonNamed personNamed) => { var personDTO = personReadModel.GetById(personNamed.PersonId); personDTO.Name = personNamed.Name; personDTO.WasRenamed = false; personReadModel.Save(personDTO); }); EventBus.Instance.Subscribe((PersonRenamed personRenamed) => { var personDTO = personReadModel.GetById(personRenamed.PersonId); personDTO.Name = personRenamed.Name; personDTO.WasRenamed = true; personReadModel.Save(personDTO); }); NamePerson(personReadModel); NameAndRenamePerson(personReadModel); // Drop readmodel on mongo and then run this to restore //EventBus.Instance.RestoreReadModel(EventBus.Instance); Console.ReadLine(); }