Используйте хранимую процедуру для метода поиска - PullRequest
0 голосов
/ 14 ноября 2018

Я начал с ASP.Net Core 2.0, я пытаюсь переписать метод GetAll путем поиска с использованием хранимой процедуры.Вот метод поиска:

public async Task<List<DepartmentTypeDto>> SearchDepartmentType()
{
    EnsureConnectionOpen();

    using (var command = CreateCommand("CM_DEPT_GROUP_Search", CommandType.StoredProcedure))
    {
        using (var dataReader = await command.ExecuteReaderAsync())
        {
                List<DepartmentTypeDto> result = new List<DepartmentTypeDto>();

                while (dataReader.Read())
                {
                    DepartmentTypeDto departmentTypeDto = new DepartmentTypeDto
                    {
                        GROUP_ID = dataReader["GROUP_ID"].ToString(),
                        GROUP_CODE = dataReader["GROUP_CODE"].ToString(),
                        GROUP_NAME = dataReader["GROUP_NAME"].ToString(),
                        NOTES = dataReader["NOTES"].ToString(),
                        RECORD_STATUS = dataReader["RECORD_STATUS"].ToString(),
                        MAKER_ID = dataReader["MAKER_ID"].ToString(),
                        CREATE_DT = Convert.ToDateTime(dataReader["CREATE_DT"]),
                        AUTH_STATUS = dataReader["AUTH_STATUS"].ToString(),
                        CHECKER_ID = dataReader["CHECKER_ID"].ToString(),
                        APPROVE_DT = Convert.ToDateTime(dataReader["APPROVE_DT"]),
                        AUTH_STATUS_NAME = dataReader["AUTH_STATUS_NAME"].ToString(),
                        RECORD_STATUS_NAME = dataReader["RECORD_STATUS_NAME"].ToString()
                    };
                }
                return result;   
            }
        }
}

Вот сервис:

public async Task<PagedResultDto<GetDepartmentTypeForView>> GetAll(GetAllDepartmentTypesInput input)
{
     var filteredDepartmentTypes = _departmentTypeRepository.SearchDepartmentType();

     var query = (from o in filteredDepartmentTypes
                  select new GetDepartmentTypeForView() { DepartmentType = ObjectMapper.Map<DepartmentTypeDto>(o) });

     var totalCount = await query.CountAsync();

     var departmentTypes = await query
            .OrderBy(input.Sorting ?? "departmentType.id asc")
            .PageBy(input)
            .ToListAsync();

     return new PagedResultDto<GetDepartmentTypeForView>(totalCount, departmentTypes);
}

Но я получаю ошибку:

Task<List<DepartmentTypeDto>> не содержитопределение для Select

Кто-нибудь знает, что мне делать?Я работаю на Asp.Net Zero.

1 Ответ

0 голосов
/ 10 декабря 2018

Я изменил свой метод поиска

public IQueryable<DepartmentTypeView> SearchDepartmentType(GetAllDepartmentTypesInput input, int top)
    {
        try
        {
            var GROUP_FILTER = input.Filter;
            var GROUP_CODE = input.GROUP_CODEFilter;
            var GROUP_NAME = input.GROUP_NAMEFilter;
            var AUTH_STATUS = input.AUTH_STATUSFilter;

            var result = Context.Query<DepartmentTypeView>().FromSql($"EXEC CM_DEPT_GROUP_Search @p_GROUP_FILTER = {GROUP_FILTER}, @p_GROUP_CODE={GROUP_CODE}, @p_GROUP_NAME={GROUP_NAME}, @p_AUTH_STATUS={AUTH_STATUS}, @p_TOP={top}");

            return result;
        }
        catch
        {
            return null;
        }
    }

, и в службе я вызываю эту функцию var filteredDepartmentTypes = _departmentTypeRepository.SearchDepartmentType(input,100); Я также создаю новый класс, чтобы сохранить результат, и не забудьте сопоставить этот класс с классом DTO configuration.CreateMap<DepartmentTypeView, DepartmentTypeDto>(); У меня это работает.

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