gpt4 book ai didi

c# - "Derived"使用 Hot Chocolate 和 EFCore 的 GraphQL 字段解析器

转载 作者:行者123 更新时间:2023-12-05 04:47:24 26 4
gpt4 key购买 nike

我正在使用 ASP.NET 5、Hot Chocolate 和 EFCore 5 处理 GraphQL 端点。我有 Entity Framework 实体,我使用 Hot Chocolate 在 GraphQL 中公开这些实体。我需要“导出”其中一个字段。例如,我有一个名为 employee 的类,它具有 FirstName 和 LastName 属性。我希望 GraphQL 端点为员工公开一个“全名”字段,该字段将在内部连接名字和姓氏。请注意,FirstName 和 LastName 值作为 Employee 数据库表的列存在,但将派生“FullName”字段。我该怎么做呢?我按如下方式尝试了此操作,但它不起作用

public class EmployeeType : ObjectType<Employee>
{
protected override void Configure(IObjectTypeDescriptor<Employee> descriptor)
{
descriptor.Field(@"FullName")
.Type<StringType>()
.ResolveWith<Resolvers>( p => p.GetFullName(default!, default!) )
.UseDbContext<AppDbContext>()
.Description(@"Full name of the employee");
}

private class Resolvers
{
public string GetFullName(Employee e, [ScopedService] AppDbContext context)
{
return e.FirstName + " " + e.LastName;
}
}
}

FullName 字段确实出现在 GraphQL 查询中,但它始终为空。我认为传递给 GetFullName() 的 Employee 实例 e 的名字和姓氏具有空字符串值。

我该如何解决这个问题?这是解决问题的正确方法吗?

最佳答案

虽然我自己不经常使用 ResolveWith,但我很确定您必须使用 ParentAttribute 注释 Employee :

public string GetFullName([Parent] Employee e, [ScopedService] AppDbContext context)
{
return e.FirstName + " " + e.LastName;
}

Learn more about this in the resolver documentation

关于c# - "Derived"使用 Hot Chocolate 和 EFCore 的 GraphQL 字段解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68504966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com