Я работаю над конечной точкой GraphQL, используя ASP.NET 5, Hot Chocolate и EFCore 5. У меня есть объекты инфраструктуры сущностей, которые я раскрываю в GraphQL с помощью Hot Chocolate. Мне нужно «получить» одно из полей. Скажем, например, у меня есть класс под названием «Сотрудник» и у него есть свойства FirstName и LastName. Я хочу, чтобы конечная точка GraphQL предоставила поле «Полное имя» для сотрудника, которое будет внутренне объединять имя и фамилию. Обратите внимание, что значения FirstName и LastName существуют как столбцы таблицы базы данных «Сотрудники», но поле «FullName» будет производным. Как мне это сделать? Я попробовал это сделать следующим образом, но это не сработало
Код: Выделить всё
public class EmployeeType : ObjectType
{
protected override void Configure(IObjectTypeDescriptor descriptor)
{
descriptor.Field(@"FullName")
.Type()
.ResolveWith( p => p.GetFullName(default!, default!) )
.UseDbContext()
.Description(@"Full name of the employee");
}
private class Resolvers
{
public string GetFullName(Employee e, [ScopedService] AppDbContext context)
{
return e.FirstName + " " + e.LastName;
}
}
}
Поле FullName отображается в запросе GraphQL, но оно всегда пустое. Я думаю, что экземпляр e сотрудника, передаваемый в GetFullName(), содержит пустые строковые значения для имени и фамилии.
Как это исправить? Это правильный подход к проблеме?
Подробнее здесь:
https://stackoverflow.com/questions/685 ... and-efcore