C# 是否将Graphql转换为SQL?
我们有现有的SQL Server数据库,我们正在使用C#。假设我们的移动客户端向服务器发送一个graphql。如何转换此SQL,以便我的客户机获得他期望的数据?GraphQL和SQL虽然听起来相似,但解决了不同的问题。SQL用于直接查询数据库。GraphQL用于查询任何类型的数据源,例如数据库(通过SQL或客户端库)、API和静态文件。GraphQL可以与REST或特殊API端点进行比较 一种解决方案是自己创建GraphQL实现。有很多关于如何实现和使用GraphQL服务器的重要信息。如果工作量太大,您可以从该项目中获益: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服务器的重要信息。如果工作量
还考虑查看其他的图形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得到支持,要么可能需要帮助获得支持。这个答案与上面的有什么不同?两个图书馆都提到过。