You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Code-First字段解析器中使用自定义DataLoader?

解决HotChocolate v12 Code-First解析器中自定义DataLoader的使用与批处理大小配置问题

1. 配置DataLoaderOptions覆盖默认MaxBatchSize

在依赖注入容器注册自定义DataLoader时,显式传入DataLoaderOptions设置极大值或无限制批处理大小,覆盖默认的1024限制:

services.AddScoped<PersonBatchDataLoader>(sp =>
{
    var repository = sp.GetRequiredService<IPersonRepository>();
    var batchScheduler = sp.GetRequiredService<IBatchScheduler>();
    var options = new DataLoaderOptions<string>
    {
        MaxBatchSize = int.MaxValue // 设置为极大值,等效无限制
    };
    return new PersonBatchDataLoader(repository, batchScheduler, options);
});

2. 在Code-First解析器的Resolve方法中获取DataLoader实例

由于context.DataLoader在v12 Code-First写法中不再可用,直接通过context.RequestServices从DI容器获取已注册的自定义DataLoader:

descriptor.Field("myField")
    .Type<BooleanType>()
    .Argument(
        "projectId",
        a => a
            .Type<StringType>()
            .Description("The ID of the current project"))
    .Resolve(async context =>
    {
        // 从请求服务容器中获取自定义DataLoader实例
        var personLoader = context.RequestServices.GetRequiredService<PersonBatchDataLoader>();
        // 使用DataLoader加载数据
        var targetPerson = await personLoader.LoadAsync("target-person-id");
        
        // 后续业务逻辑处理
        return true;
    });

关键说明

  • 自定义DataLoader的构造参数(IPersonRepository、IBatchScheduler)会通过DI自动注入,需确保这些服务已提前注册到容器中。
  • 若HotChocolate版本支持MaxBatchSize设为null,可直接赋值null实现严格无限制批处理。

内容的提问来源于stack exchange,提问作者System.Cats.Lol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:00:08