我可以在 GraphQL .NET 中建立 NonNullable 连接吗?

Can I make connections NonNullable in GraphQL .NET?

我正在做一个项目,我们需要建立非可选连接,但我真的找不到关于这个主题的任何内容。 我使这些字段与 NonNullableGraphType 一起使用,如下所示,但我没有运气让连接不可为空。 我到处搜索,找不到任何关于这个问题的信息,所以我希望有人能在这里帮助我,因为我完全迷路了。 不可为空的字段是这样写的:

        Field<NonNullGraphType<OrderPresetGraphType>>(
            "preset",
            resolve: context => {
                var loader = dataLoader.Context.GetOrAddBatchLoader<int, Base.Entities.Orders.OrderPreset>(
                    "OrderPresetById", orderPresetController.GetOrderPresetsByIdAsync
                );

                return loader.LoadAsync(context.Source.PresetId);
            }
        );

遗憾的是,同样的方法不适用于列表。 非常感谢任何帮助!

编辑 我目前尝试解决这个问题,看起来像这样:

        Connection<NonNullGraphType<AssetFilterPresetFieldGraphType>>()
            .Name("fields")
            .Unidirectional()
            .Description("Returns a list of AssetFilterPresetFieldGraphType connected to this AsetFilterPresetGraphType")
            .ResolveAsync(async context =>
            {
                var result = await assetFilterPresetController.GetFilterPresetFieldsByIdAsync(context.Source.Id)
                    .ConfigureAwait(false);

                return ConnectionResolver.ToConnection(result.Data, context);
            });

我也遇到了这个问题。我通过使用扩展方法用 NonNullableGraphType 包装当前类型来解决。

public static ConnectionBuilder<TSource> NonNullable<TSource>(
    this ConnectionBuilder<TSource> builder
)
{
    builder.FieldType.Type = typeof(NonNullGraphType<>).MakeGenericType(builder.FieldType.Type);
    return builder;
}

这样使用:

Connection<UserGraphType>()
    .Name("users")
    .NonNullable()
    .Resolve(ctx => /*...*/);