如何解决使用 Hot Chocolate 和 EFCore 的 GraphQL 的“派生”字段解析器
我正在使用 ASP.NET 5、Hot Chocolate 和 EFCore 5 处理 GraphQL 端点。我使用 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;
}
}
}
全名字段确实出现在 GraphQL 查询中,但它始终为空。我认为传递给 GetFullName() 的 Employee 实例 e 的名字和姓氏的字符串值为空。
解决方法
虽然我自己不经常使用 ResolveWith
,但我很确定您必须使用 Employee
注释 ParentAttribute
:
public string GetFullName([Parent] Employee e,[ScopedService] AppDbContext context)
{
return e.FirstName + " " + e.LastName;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。