Как преобразовать результат, установленную после страницC#

Место общения программистов C#
Anonymous
 Как преобразовать результат, установленную после страниц

Сообщение Anonymous »

Я хочу вернуть пользовательскую модель, а не тип коллекции. Это мой резолювер для применения сортировки, фильтрации, страниц и проекции. < /P>

Код: Выделить всё

public class CompanyResolver
{

[UseOffsetPaging(IncludeTotalCount = true)]
[UseProjection]
[UseFiltering]
[UseSorting]
public IQueryable GetChildCompanies(CompanyDbContext dbContext, [Parent] Company company)
{
return dbContext.Companies
.Include(x => x.Sol)
.Include(x => x.Comp)
.Include(x => x.Ris)
.Where(x => x.ParentId == company.CompanyId);
}
}
< /code>
Я хочу преобразовать набор результатов в промежуточном программном обеспечении, используя этот подход < /p>
public class CompanyObjectType : ObjectType
{
protected override void Configure(IObjectTypeDescriptor descriptor)
{
descriptor.Field("childCompanies")
.Type()
.Use(next => async context =>
{
await next(context);
if (context.Result is CollectionSegment allApplied)
{
var service = context.Services.GetRequiredService();
var sourceData = allApplied.Items.ToList();
var mappedData = sourceData.Any() ? service.mapper.Map(sourceData) : null;
context.Result = mappedData;
}
})
.ResolveWith(x => x.GetChildCompanies(default!, default!));
}
}
< /code>
Как видно в блоке кода, я хочу вернуть коллекцию ChildCompany; Однако выполнение запроса ниже в консоли Banana Cake Pop < /p>
childCompanies(skip: 0, take: 5) {
totalCount
items {
organizationTypeId
relationshipTypeId
statusComment
statusDate
statusTypeId
}
}
< /code>
Возвращает следующее сообщение об ошибке, хотя оно применяется фильтрация, сортировка и т. Д. < /p>
{
"message": "The resolver parent type of field `ChildCompaniesCollectionSegment.items` is `System.Collections.Generic.List`1[Eastdil.Companies.GraphQL.Types.ChildCompany]` but the resolver requested the type `HotChocolate.Types.Pagination.CollectionSegment`. The resolver was unable to cast the parent type to the requested type.",
"path": [
"company",
"childCompanies",
"items"
],
"extensions": {
"field": "ChildCompaniesCollectionSegment.items",
"code": "HC0053"
}
}
< /code>
Я попробовал без использования такого промежуточного программного обеспечения, но оно не фильтрует и не наносит страницу запроса.  Banana Cake Pop не показывал никаких аргументов. < /P>
descriptor.Field("childCompanies")
.Type()
.Resolve(async context =>
{
var allApplied = await query.Sort(context)
.Filter(context)
.Project(context)
.ApplyOffsetPaginationAsync(context);
...
...
});
Пожалуйста, дайте мне знать, что мне здесь не хватает

Подробнее здесь: https://stackoverflow.com/questions/794 ... pagination

Вернуться в «C#»