2016-09-22 206 views
10

我们有现有的SQL Server数据库,我们正在使用C#。让我们的移动客户端发送一个graphql到服务器。我如何转换这个SQL,让我的客户端得到他期望的数据?将Graphql转换为SQL?

+1

其中一个可能的灵魂可能是graphql.net +实体框架。 –

+0

@ Manivannan.D.Sekaran任何示例 – user960567

+0

您使用的是Entity Framework吗?请为您提供一个Graphql查询的例子,以便我可以给您一个确切的转换示例。 – Transcendent

回答

13

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

一个解决方案就是自己创建GraphQL实现。 GraphQL.org有很多关于如何实现和使用GraphQL服务器的很好的信息。如果这样做太多了,你可以从这个项目中捎带回来:GraphQL .NET

也可以考虑查看其他GraphQL实现,例如ApolloStack。如果您的GraphQL服务器与.NET服务器分开,您可以使用ApolloStack或其他Javascript GraphQL服务器来托管您的数据。

+3

alex的问题很简单。如果客户端以graphql格式向我发送数据,如何获得我的数据已存在于我的SQL SERVER数据库中。这可能吗? – user960567

+0

下面是一个使用Node.js从SQL获取的示例GraphQL服务器:https://github.com/apollostack/GitHunt-API/tree/master/api/sql – stubailo

+1

Node.js在GraphQL生态系统中有更多的库,所以构建Node服务将为您提供更多选择。 [加入怪物](https://github.com/stems/join-monster)是一个试图从给定的GraphQL请求和模式定义生成SQL查询的库。 –

0

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

如果您的客户端使用GraphQL向您发送请求,您别无选择,只能创建您的GraphQL服务器并从那里查询数据库。

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

5

我建议你看看实现一个C#版本的Join Monster仓库,由
Andy Carlson编写。 https://github.com/stems/join-monster

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

+2

感谢您的提及!加入Monster确实支持多对多的关系。你可以从中获得的数据是有限的,但目前正在通过。 –

+0

我不知道!目前我真的很想使用它,但是我正在与Apollo服务器合作,所以我想我要么等到Apollo支持,要么可能有助于获得支持。 – AjaxLeung