public async Task <GetOrderQueryResponse> Handle(GetOrderQuery query, CancellationToken token)
        {
            var order = (await repository.Query(x => x.ExternalId == query.OrderId, token))
                        .SingleOrDefault();

            if (order == null)
            {
                throw EntityNotFoundException.Of <Order>(query.OrderId);
            }

            var itemIds = order.Items.Select(x => x.ItemId).ToList();
            var items   = await dbContext.Set <Item>()
                          .Where(x => itemIds.Contains(x.Id))
                          .ToDictionaryAsync(k => k.Id, v => v, token);

            return(new GetOrderQueryResponse
            {
                Order = OrderDto.FromEntity(order, items)
            });
        }