コード例 #1
0
        public async Task EnqueueAsync <T>(ICommand <T> command)
        {
            // 3) domain events persistance handler

            var domainEvent = new EventStore();

            domainEvent.Id          = command.Id;
            domainEvent.EnqueueDate = DateTime.UtcNow;
            domainEvent.Type        = command.GetType().FullName;
            domainEvent.Data        = JsonConvert.SerializeObject(command);

            await _context.EventStore.AddAsync(domainEvent);

            await _context.SaveChangesAsync();
        }
コード例 #2
0
        public async Task <Guid> Create(ProductTrade newTrade)
        {
            // 1) raise domain events
            AddDomainEvent(new TradeRegisteredEvent(newTrade.Id));

            // store the object
            await _context.ProductTrade.AddAsync(newTrade);

            var command = new TradeRegisteredCommand(Guid.NewGuid(), newTrade.TradeId);

            var domainEvent = new EventStore();

            domainEvent.Id          = command.Id;
            domainEvent.EnqueueDate = DateTime.UtcNow;
            domainEvent.Type        = command.GetType().FullName;
            domainEvent.Data        = JsonConvert.SerializeObject(command);

            await _context.EventStore.AddAsync(domainEvent);

            // save changes
            await _context.SaveChangesAsync();

            return(newTrade.Id);
        }