Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否将Graphql转换为SQL?_C#_Sql Server_Graphql - Fatal编程技术网

C# 是否将Graphql转换为SQL?

C# 是否将Graphql转换为SQL?,c#,sql-server,graphql,C#,Sql Server,Graphql,我们有现有的SQL Server数据库,我们正在使用C#。假设我们的移动客户端向服务器发送一个graphql。如何转换此SQL,以便我的客户机获得他期望的数据?GraphQL和SQL虽然听起来相似,但解决了不同的问题。SQL用于直接查询数据库。GraphQL用于查询任何类型的数据源,例如数据库(通过SQL或客户端库)、API和静态文件。GraphQL可以与REST或特殊API端点进行比较 一种解决方案是自己创建GraphQL实现。有很多关于如何实现和使用GraphQL服务器的重要信息。如果工作量

我们有现有的SQL Server数据库,我们正在使用C#。假设我们的移动客户端向服务器发送一个graphql。如何转换此SQL,以便我的客户机获得他期望的数据?

GraphQL和SQL虽然听起来相似,但解决了不同的问题。SQL用于直接查询数据库。GraphQL用于查询任何类型的数据源,例如数据库(通过SQL或客户端库)、API和静态文件。GraphQL可以与REST或特殊API端点进行比较

一种解决方案是自己创建GraphQL实现。有很多关于如何实现和使用GraphQL服务器的重要信息。如果工作量太大,您可以从该项目中获益:


还考虑查看其他的图形QL实现,例如。如果可以将GraphQL服务器与.NET服务器分开,则可以使用ApolloStack或其他Javascript GraphQL服务器来承载数据。

不,很遗憾,您无法将GraphQL转换为SQL

如果您的客户机正在GraphQL中向您发送请求,那么您别无选择,只能创建GraphQL服务器并从那里查询数据库


GraphQL不是SQL。SQL是数据库查询语言,GraphQL是从客户端到中间件的查询语言

我建议您考虑实现一个由
安迪·卡尔森。

它试图将客户机提供的GraphQL查询转换为最有效的SQL查询。它目前不支持多对多关系或联合类型(多态关联),但这些目标是存储库路线图的一部分

编辑2019


现在还存在其他选项,如Hasura和Postgraphile。此外,Prisma最终可能会在C#

中提供,您还可以查看一个实现,例如


它基本上检查每个GraphQL请求,并将嵌套字段的解析程序组合成一个SQL连接,然后递归地进行解析。

好吧,它本身就是GraphQL,正如guys之前写的那样,它只是API调用的语法或查询格式。顺便说一句,上面提到的lib之一是GraphQL.NET,我知道该组件使用它直接调用所有流行的数据库(如MSSQL、MySQL、PostgreSQL甚至ElasticSearch)——只需在json文件中描述数据表/字段即可使用。
在评论中ping我或者用谷歌搜索(类似于GraphQL.net api sql)

我发现最成熟的开源实现是

这是什么? Join Monster是Node.js GraphQL js参考实现中GraphQL和SQL之间的查询规划器。这是一个函数,它接受GraphQL查询并将GraphQL动态转换为SQL,以便在解析之前进行高效的批处理数据检索。它只获取您需要的数据——不多也不少

为什么? 它解决了进行过多数据库查询的问题,即“往返”问题或“N+1”问题,其中往返是API服务器和SQL数据库之间通过TCP/IP堆栈请求数据。可以将其视为Facebook数据加载器的替代品,但它对SQL更为特殊,使其更强大,更易于与SQL一起使用

它不是从数据库自动为GraphQL创建模式的工具,反之亦然。您保留了按照自己的意愿定义模式的自由和权力。Join Monster只是基于现有模式将GraphQL查询“编译”为SQL查询。它适合于现有的应用程序,可以在以后无缝删除或在不同程度上使用。这有点固执己见,但不是一个完整的ORM

它看起来和你要找的一模一样


另外,(这里提到的答案)是另一种可能性。它基本上为Postgre DB带来了GraphQL功能


这两种解决方案都可能适合您的需要

简单。使用GraphQL.EntityFramework


可能的解决方案之一是graphql.net+实体框架。@Manivannan.D.Sekaran任何示例您是否使用实体框架?请为您提供一个Graphql查询示例,以便我可以给您一个转换的确切示例。alex问题很简单。若客户端以graphql格式向我发送数据,那个么如何获取SQL SERVER数据库中的数据呢。这是可能的还是不可能的?下面是一个使用Node.js从SQL提取的GraphQL服务器示例:Node.js在GraphQL生态系统中有更多的库,因此构建节点服务将为您提供更多的选项。是一个库,它尝试从给定的GraphQL请求和模式定义生成SQL查询。谢谢您的介绍!Join Monster实际上支持多对多关系。你能从中获得的数据是有限的,但目前正在处理中。我不知道!目前我真的很想使用它,但我正在使用Apollo Server,所以我想我要么需要等到Apollo得到支持,要么可能需要帮助获得支持。这个答案与上面的有什么不同?两个图书馆都提到过。