我的目标:创建一个 Windows 表单应用程序,通过 GraphQl 查询现有的在线数据库。

我所做的:

  • 为了模拟一个 graphQl 服务器,我一直遵循官方的graphql-node 教程直到最后。 所以现在我可以从 GraphQl playground 查询并得到响应。 该服务器在 localhost:4000 上运行。
  • 我在 Visual Studio 中创建了一个 windows 窗体应用程序,它在 graphQl 中查询包含模拟数据的内部数据库。 例如

我的Form.cs类包含此代码,我在其中执行查询 onButtonClick

    private void button1_Click(object sender, EventArgs e)
    {
        var schema = Schema.For(@"
            type Jedi {
                name: String,
                side: String,
                id: ID
            }
            type Query {
                hello: String,
                jedis: [Jedi],
                jedi(id: ID): Jedi
            }", _ => { _.Types.Include<Query>(); }
        );

        var json = schema.Execute(_ =>
        {
            _.Query = "{jedis { name, side } }";
        });

        System.Diagnostics.Debug.WriteLine(json);

        label1.Text = json;
    }

执行查询后,我的Query.cs类将识别它并解析查询

class Query
{
    [GraphQLMetadata("jedis")]
    public IEnumerable<Jedi> GetJedis()
    {
        return StarWarsDB.GetJedis();
    }
}

这是我当前的内部数据库

class StarWarsDB
{
    public static IEnumerable<Jedi> GetJedis()
    {
        return new List<Jedi>() {
    new Jedi(){ Id = 1, Name ="Luke", Side="Light"},
    new Jedi(){ Id = 2, Name ="Yoda", Side="Light"},
    new Jedi(){ Id = 3, Name ="Darth Vader", Side="Dark"}
};
    }
}

我想做的下一步:

现在,我在网上找到了很多关于如何查询数据库的示例,但它们总是在 Visual Studio 内部制作的。 我想要做的是连接到我现在在我的 localHost 上运行的个人数据库(我按照graphql-node 教程制作的那个)并使用 graphQl 查询它。 然后获取 JSON 响应并将其打印在某处。

#1楼 票数:2

你有点混淆了。 对于初学者,您不需要在客户端上有架构声明。 如果我理解正确,您正在使用网络表单,并且想要访问后端的 api 服务,该服务将返回您的数据。

因此,在这种情况下,您的 webforms 项目中需要一个 graphql“客户端”,您可以使用它“连接”到诸如prisma api 之类的端点,然后您只将查询或更改作为请求发送到 api。

这是客户端的链接,您将其安装为 nuget,然后按照文档进行操作。

https://github.com/graphql-dotnet/graphql-client

因此,用最简单的术语解释,graphqlClient 将查询发送到 => 端点(在本例中是您的 Prisma api),它从您的数据库中获取数据 =>。

Client(query) => Api(select * datasource) => DB(SQL) => Api(returns data) => Client(deserialise) => 绑定到 UI => 查看输出。

#2楼 票数:1

GraphQL 是一种用于 API 的查询语言,也是一种服务器端运行时,用于使用您为数据定义的类型系统来执行查询。 GraphQL 不依赖于任何特定的数据库或存储引擎,而是由您现有的代码和数据支持。 - graphql.org

嗨扎耶德

也许我误解了您的解释,但您无法使用 GraphQL 直接查询数据库。 您需要在连接和 GraphQL 逻辑之间有一个 API 项目。 您将 GraphQL 方案发布到 API 端点,它会根据您的端点返回正确的数据结构。

我找到了一个很好的网站,其中将逐步解释如何在 ASP.NET CORE 2 中实现它。

希望这有帮助,祝你好运!

  ask by Zayed Ahmed translate from so

未解决问题?本站智能推荐:

2回复

在 .Net 中使用 GraphQL 客户端库的 AWS Appsync 实现

我正在尝试实现类似于此 python 示例的应用同步订阅,但在 .net https://aws.amazon.com/blogs/mobile/appsync-websockets-python/ 我开始使用 nuget 包 GraphQL.Client https://www.nuget.or
1回复

抛出C#的GraphQL异常。 GraphQL.Parser.SourceException:

我正在尝试实现以下工具: https : //github.com/ckimes89/graphql-net 我对GraphQL有点问题。 我正在尝试查询数据集,但是当我尝试执行查询时遇到了问题。 我得到例外: GraphQL.Parser.SourceException:'字段
1回复

如何在 .NET 中使用 Hot Chocolate 扩展 GraphQL 自省类型

在我的情况下,我想扩展__EnumValue内省类型以本质上携带有关枚举值的附加信息。 如何向内省添加其他字段。
1回复

如何执行 Graphql 查询?

请举一个简单的例子如何执行查询。 我在网上找到了一些例子,但它们不起作用。 喜欢
1回复

使用 JWT 进行 GraphQL .NET 身份验证不起作用

我正在实现一个试图用 JWT 保护的 GraphQL API。 在我的 Startup.cs 我正在实施 和 我通过添加在我的文件控制器之一上测试了身份验证 它就像一个魅力,但我似乎无法让它来验证我的 GraphQL 端点。 我可以在没有 http 标头中的令牌的情况下运行查询和突变。
1回复

GraphQL查询语法错误

我正在使用此GraphQl nuget通过以下代码在我的系统上实现常规查询 执行查询看起来像什么 像这样的主要GraqhQL组件 我使用了不同的graphql查询字符串,这是行不通的示例 我总是会出错 任何想法如何解决
1回复

我可以在GraphQL中将.NET字典表示为JSON字典吗?

当我序列化为JSON时,我习惯于.NET字典成为以键作为属性,值作为其值的对象。 ( Json.Net文档有一个简洁的示例。 ) 我正在使用GraphQL并努力实现类似的结果。 我用于此根查询的数据基本上是Dictionary<MyEnum,Dictionary<strin
1回复

订阅中的.Net中的GraphQL客户端

找不到支持订阅的GraphQL的.Net客户端,我是否错过了一些明显的东西?