【问题标题】:GraphQL : Not Getting EF Related objects after implementing TypesGraphQL:实现类型后未获取 EF 相关对象
【发布时间】:2021-10-17 07:09:39
【问题描述】:

对于背景,我正在关注这里的教程:https://www.youtube.com/watch?v=HuN94qNwQmM

由于代码太长,我将其放入 git https://github.com/dikeshkumar135/CommandERGQL

现在,当我向这个机构提出请求时,问题来了

    query{
     platform{
       id,
       name,
       commands{
         howTo
       }
     }
    }

我正在获取平台的数据,其中命令值为 null 并出现以下错误:

{
  "message": "There was no argument with the name `platform` found on the field `commands`.",
  "locations": [
    {
      "line": 5,
      "column": 5
    }
  ],
  "path": [
    "platform",
    1,
    "commands"
  ],
  "extensions": {
    "fieldName": "commands",
    "argumentName": "platform"
  }

如果我删除类型,它工作正常,但如果我添加类型,则会出现获取相关对象的问题。

【问题讨论】:

    标签: c# .net .net-core graphql


    【解决方案1】:

    在 HotChocolate v12 中,ResolverWith 方法中包含的 DependecyInjection 将所有参数假定为 Argument。以下除外

    当解析器被执行时,Hot Chocolate 也会自动填充一些特定的参数。这些包括依赖注入服务、DataLoaders、状态,甚至是父值之类的上下文。

    Documentation Source

    这是您正在使用的教程的升级示例

    public IQueryable<Command> GetCommands(
        [Parent] Platform platform,
        [ScopedService] AppDbContext context)
    {
        return context.Commands.Where(p => p.PlatformId == platform.Id);
    }
    

    【讨论】:

      【解决方案2】:

      我将 hotchocolate 包从 12.0.1 降级到 11.0.8 并且它起作用了。这是对我在 youtube 上的评论的建议。

      【讨论】:

        【解决方案3】:

        如果您没有更新数据的目标,您可以省略使用 EF 并使用,例如,NReco.GraphQL 通过 json 样式定义设置 graphql 架构(包括架构对象之间的关系)。设置 db-connection 非常简单,并且在底层它是 ORM。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-05
          • 1970-01-01
          • 1970-01-01
          • 2019-10-15
          • 1970-01-01
          • 2018-11-13
          • 2022-01-03
          • 1970-01-01
          相关资源
          最近更新 更多