Как я могу получить все записи, которые соответствуют условию? - PullRequest
1 голос
/ 29 марта 2020

Как я могу получить все записи, которые соответствуют условию? У меня есть следующий код, он выдает исключение, когда есть более одного результата. Как я могу обновить свой код, чтобы получить все записи.

protected override async Task<GetBillingByID_Action_Response> PerformActionAsync(GetBillingByID_Action_Request request)
{
    var Billing = await Context.Billings.Where(b => b.ProjectID == request.ID)
                                        .SingleOrDefaultAsync();
    var BillingDTO = Mapper.Map<BillingDTO>(Billing);

    return new GetBillingByID_Action_Response { Billing = BillingDTO };
}

Я получаю эту исключительную ошибку:

System.InvalidOperationException: Перечислителю не удалось переместить MoveNextAsyn c.

Я также пытался использовать ToListAsync() как:

var Billing = await Context.Billings.Where(b => b.ProjectID == request.ID).ToListAsync();

Но я получаю эту ошибку исключения

AutoMapper.AutoMapperMappingException: отсутствует конфигурация карты типов или неподдерживаемое отображение .

Типы отображения: List`1 -> BillingDTO

1 Ответ

1 голос
/ 29 марта 2020

Вам не следует использовать SingleOrDefaultAsync, если вы хотите получить все записи, ToListAsync - это правильный выбор, основанный на том, что вам нужно, однако вместо этого вам нужно отобразить список BillingDTO, поскольку Biling будет список:

var BillingDTO = Mapper.Map<List<BillingDTO>>(Billing);

Вам также необходимо изменить следующее свойство:

return new GetBillingByID_Action_Response { Billing = BillingDTO }; 

BillingDTO теперь список, поэтому вам нужно изменить Billing свойство в классе GetBillingByID_Action_Response к списку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...