Graphql 如何在热巧克力中拆分查询类型的解析程序
我正在尝试使用.net core的热巧克力库实现一个标准的GraphQL实现,其中读取数据的解析器属于根查询对象。 像这样:Graphql 如何在热巧克力中拆分查询类型的解析程序,graphql,hotchocolate,Graphql,Hotchocolate,我正在尝试使用.net core的热巧克力库实现一个标准的GraphQL实现,其中读取数据的解析器属于根查询对象。 像这样: { Query { GetTodo { Id } } } 这是我试图遵循文档所做的,但它没有像我预期的那样工作: startup.cs public void ConfigureServices(IServiceCollection services) { services.Ad
{
Query {
GetTodo {
Id
}
}
}
这是我试图遵循文档所做的,但它没有像我预期的那样工作:
startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(
SchemaBuilder.New()
.AddQueryType<QueryType>()
.BindResolver<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class QueryType : ObjectType
{
protected override void Configure(IObjectTypeDescriptor descriptor)
{
}
}
}
using System.Threading.Tasks;
using HotChocolate;
using HotChocolate.Types;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using Models;
namespace Queries
{
[GraphQLResolverOf(typeof(Todo))]
[GraphQLResolverOf("Query")]
public class TodoQueries
{
public async Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return await dbContext.Todos.FirstAsync();
}
}
public class TodoQueryType : ObjectType<TodoQueries> {
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(serviceProvider =>
SchemaBuilder.New()
.AddServices(serviceProvider)
.AddQueryType<Query>()
.AddType<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class Query
{
}
}
[ExtendObjectType(Name = "Query")]
public class TodoQueries
{
// Side note, no need for async/await while it returns Task<>
//
public Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return dbContext.Todos.FirstAsync();
}
}
TodoQueries.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(
SchemaBuilder.New()
.AddQueryType<QueryType>()
.BindResolver<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class QueryType : ObjectType
{
protected override void Configure(IObjectTypeDescriptor descriptor)
{
}
}
}
using System.Threading.Tasks;
using HotChocolate;
using HotChocolate.Types;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using Models;
namespace Queries
{
[GraphQLResolverOf(typeof(Todo))]
[GraphQLResolverOf("Query")]
public class TodoQueries
{
public async Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return await dbContext.Todos.FirstAsync();
}
}
public class TodoQueryType : ObjectType<TodoQueries> {
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(serviceProvider =>
SchemaBuilder.New()
.AddServices(serviceProvider)
.AddQueryType<Query>()
.AddType<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class Query
{
}
}
[ExtendObjectType(Name = "Query")]
public class TodoQueries
{
// Side note, no need for async/await while it returns Task<>
//
public Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return dbContext.Todos.FirstAsync();
}
}
使用System.Threading.Tasks;
使用热巧克力;
使用热巧克力;
使用Microsoft.EntityFrameworkCore;
使用System.Linq;
使用模型;
名称空间查询
{
[graphqlsolverof(typeof(Todo))]
[GraphQLResolverOf(“查询”)]
公开课问答
{
公共异步任务GetTodo([Service]ChocodotContext dbContext){
返回wait-dbContext.Todos.FirstAsync();
}
}
公共类TodoQueryType:ObjectType{
}
}
我有什么地方不对劲?您需要稍微改变一下:
query {
todo {
id
}
}
startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(
SchemaBuilder.New()
.AddQueryType<QueryType>()
.BindResolver<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class QueryType : ObjectType
{
protected override void Configure(IObjectTypeDescriptor descriptor)
{
}
}
}
using System.Threading.Tasks;
using HotChocolate;
using HotChocolate.Types;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using Models;
namespace Queries
{
[GraphQLResolverOf(typeof(Todo))]
[GraphQLResolverOf("Query")]
public class TodoQueries
{
public async Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return await dbContext.Todos.FirstAsync();
}
}
public class TodoQueryType : ObjectType<TodoQueries> {
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(serviceProvider =>
SchemaBuilder.New()
.AddServices(serviceProvider)
.AddQueryType<Query>()
.AddType<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class Query
{
}
}
[ExtendObjectType(Name = "Query")]
public class TodoQueries
{
// Side note, no need for async/await while it returns Task<>
//
public Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return dbContext.Todos.FirstAsync();
}
}
TodoQueries.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(
SchemaBuilder.New()
.AddQueryType<QueryType>()
.BindResolver<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class QueryType : ObjectType
{
protected override void Configure(IObjectTypeDescriptor descriptor)
{
}
}
}
using System.Threading.Tasks;
using HotChocolate;
using HotChocolate.Types;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using Models;
namespace Queries
{
[GraphQLResolverOf(typeof(Todo))]
[GraphQLResolverOf("Query")]
public class TodoQueries
{
public async Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return await dbContext.Todos.FirstAsync();
}
}
public class TodoQueryType : ObjectType<TodoQueries> {
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ChocodotContext>();
services.AddGraphQL(serviceProvider =>
SchemaBuilder.New()
.AddServices(serviceProvider)
.AddQueryType<Query>()
.AddType<TodoQueries>()
.Create()
);
}
using HotChocolate.Types;
namespace Queries
{
public class Query
{
}
}
[ExtendObjectType(Name = "Query")]
public class TodoQueries
{
// Side note, no need for async/await while it returns Task<>
//
public Task<Todo> GetTodo([Service] ChocodotContext dbContext) {
return dbContext.Todos.FirstAsync();
}
}
[ExtendObjectType(Name=“Query”)]
公开课问答
{
//附带说明,在返回任务时不需要异步/等待
//
公共任务GetTodo([Service]chocodocontext dbContext){
返回dbContext.Todos.FirstAsync();
}
}
用热巧克力10.5.2测试
解决方案来源-ChilliCream博客,HotChocolate 10.3.0文章,第节