...
Quando definimos o nosso repositório recebemos como parâmetro uma interface chamada ICarolClient. Esse tipo é injetado via dependência e representa representando o client de conexão com o Carol.
...
Esse método retorna uma interface de forma fluente onde é possível construir a query desejada. O método GetAllAsync do CarolRepositoryBase recebe o resultado dessa query criada retornando assim os registros que satisfazerem a sentença.
Note que no método InsertAsync o repositório do Carol recebe um parâmetro informando se a operação é síncrona ou assíncrona.
A diferença entre as operações é que a síncrona cria registro por registro na sequencia e espera o seu processamento pela interface de MDM (Master Data Management) do Carol.
Quando a operação é assíncrona os dados são inseridos em lote não esperando o seu processamento pelo MDM. Um processo posteriormente irá processar os registros pendentes no Carol.