Я пытаюсь улучшить производительность запроса sql с помощью hotchocolate. Для этого я хотел получить доступ к запросу, сгенерированному hotchololate, в другом слое моего приложения. Единственный способ найти способ сделать это - перехватить запрос, сохранить необходимую информацию с помощью элементов HttpContext, а затем внедрить IHttpContextAccessor, где бы он мне ни понадобился.
services.AddQueryRequestInterceptor(GraphQLRequestInterceptor);
...
private Task GraphQLRequestInterceptor(HttpContext context, IQueryRequestBuilder requestBuilder, CancellationToken cancellationToken)
{
IReadOnlyQueryRequest request = requestBuilder.Create();
context.Items.Add("graph", request);
}
И затем восстановить его, введя IHttpContextAccessor
public ClientesQueries(Microsoft.AspNetCore.Http.IHttpContextAccessor contextAccessor)
{
var queryRequest = contextAccessor.HttpContext.Items["graph"] as IReadOnlyQueryRequest;
}
С помощью этого кода я могу создать выражение для запроса в моей базе данных только тех данных, которые были запрошены клиентом.
Есть ли лучший способ добиться этого?