public Task <AsyncTaskResult> HandleAsync(ServiceExpressedEvent evnt)
        {
            return(TryTransactionAsync(async(connection, transaction) =>
            {
                var info = evnt.Info;
                var effectedRows = await connection.UpdateAsync(new
                {
                    Version = evnt.Version,
                    EventSequence = evnt.Sequence
                }, new
                {
                    Id = evnt.AggregateRootId,
                    //Version = evnt.Version - 1
                }, ConfigSettings.OrderGoodsTable, transaction);

                if (effectedRows == 1)
                {//聚合跟状态已经更新
                    var tasks = new List <Task>();

                    //插入申请记录
                    tasks.Add(connection.InsertAsync(new
                    {
                        OrderGoodsId = evnt.AggregateRootId,
                        ServiceNumber = info.ServiceNumber,
                        ExpressName = info.ExpressName,
                        ExpressNumber = info.ExpressNumber,
                        CreatedOn = evnt.Timestamp,
                    }, ConfigSettings.ServiceExpressTable));

                    await Task.WhenAll(tasks);
                }
            }));
        }
Beispiel #2
0
 private void Handle(ServiceExpressedEvent evnt)
 {
     _serviceExpressInfo = evnt.Info;
 }