微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 aspnetboilerplate 上使用热巧克力 Graphql

如何解决在 aspnetboilerplate 上使用热巧克力 Graphql

我看到我们可以在 dotNetCore 上使用 Hot Chocolate 并且我通常使用它。

GraphQL/Query.cs

public class Query
{
    public IQueryable<TestTbl> GetList([Service] myDbContext context)
    {
        return context.TestTbl;
    }

}

这是我的startup.cs

ConfigureServices services.AddGraphQLServer().AddQueryType();

配置

app.UseEndpoints(endpoints =>
{
     endpoints.MapGraphQL();
}

但是当我调用这个查询时,我得到了这个错误

{
  "errors": [
    {
      "message": "Unexpected Execution Error","locations": [
        {
          "line": 2,"column": 3
        }
      ],"path": [
        "testTbl"
      ],"extensions": {
        "message": "Can't create component 'markaz.EntityFrameworkCore.markazDbContext' as it has dependencies to be satisfied.\r\n\r\n'markaz.EntityFrameworkCore.markazDbContext' is waiting for the following dependencies:\r\n- Service 'Microsoft.EntityFrameworkCore.DbContextOptions`1[[markaz.EntityFrameworkCore.markazDbContext,markaz.EntityFrameworkCore,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]' which was not registered.\r\n","stackTrace": "   at Castle.MicroKernel.Handlers.DefaultHandler.AssertNotWaitingForDependency()\r\n   at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context,Boolean requiresDecommission,Boolean instancerequired,Burden& burden)\r\n   at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context,Boolean instancerequired)\r\n   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler,Type service,Arguments additionalArguments,IReleasePolicy policy,Boolean ignoreParentContext)\r\n   at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service,Arguments arguments,Boolean ignoreParentContext)\r\n   at Castle.MicroKernel.DefaultKernel.Resolve(Type service,Arguments arguments)\r\n   at Castle.Windsor.MsDependencyInjection.ScopedWindsorServiceProvider.GetServiceInternal(Type serviceType,Boolean isOptional)\r\n   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetrequiredService[T](IServiceProvider provider)\r\n   at HotChocolate.Execution.Processing.MiddlewareContext.Service[T]()\r\n   at lambda_method1153(Closure,IResolverContext )\r\n   at HotChocolate.Types.FieldMiddlewareCompiler.<>c_displayClass3_0.<<CreateResolverMiddleware>b_0>d.MoveNext()\r\n--- End of stack trace from prevIoUs location ---\r\n   at HotChocolate.Execution.Processing.ResolverTask.ExecuteResolverPipelineAsync(CancellationToken cancellationToken)\r\n   at HotChocolate.Execution.Processing.ResolverTask.TryExecuteAsync(CancellationToken cancellationToken)"
      }
    }
  ],"data": {
    "testTbl": null
  }
}

知道我该怎么做吗?

解决方法

您需要设置数据库上下文。查看我们的教程,我们将引导您完成入门以及如何与 EF 集成。

https://github.com/ChilliCream/graphql-workshop

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。