2016-09-22 2 views
10

У нас есть существующая база данных SQL Server, и мы используем C#. Допустим, наш мобильный клиент отправит graphql на сервер. Как я могу преобразовать этот SQL, чтобы мой клиент получал данные, чего он ожидал?Преобразование Graphql в SQL?

+1

Одним из возможных вариантов душа может быть graphql.net + Entity Framework. –

+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 вопрос простой. Как я могу получить свои данные уже в моей базе данных SQL SERVER, если клиент отправит мне данные в формате graphql. Возможно ли это или нет? – user960567

+0

Вот пример сервера GraphQL, который извлекает из SQL с помощью Node.js: https://github.com/apollostack/GitHunt-API/tree/master/api/sql – stubailo

+1

Node.js имеет гораздо больше библиотек в экосистеме GraphQL, поэтому создание службы узла даст вам еще много возможностей. [Join Monster] (https://github.com/stems/join-monster) - это библиотека, которая пытается сгенерировать SQL-запросы из заданного запроса GraphQL и определения схемы. –

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 Server, поэтому я думаю, что мне нужно будет подождать, пока Apollo не будет поддерживаться или, возможно, поможет в его поддержке. – AjaxLeung

Смежные вопросы