Несколько изменений в GraphQL для построителя API данных
Построитель API данных (DAB) поддерживает объединение нескольких операций изменения в одну транзакцию. Несколько изменений поддерживают сценарии, в которых необходимо создать несколько элементов, принадлежащих одной сущности, или создать несколько элементов, принадлежащих связанной сущности. В этом руководстве рассматривается пример сценария с использованием операции с несколькими изменениями.
Предварительные требования
- Существующий сервер SQL и база данных.
- Интерфейс командной строки построителя API данных. Установка интерфейса командной строки
- Клиент базы данных (SQL Server Management Studio, Azure Data Studio и т. д.)
- Если у вас не установлен клиент, установите Azure Data Studio.
Создание таблиц
Начните с создания двух основных таблиц для представления книг и соответствующих глав. Книги имеют отношение "один ко многим " с соответствующими главами.
Подключитесь к базе данных SQL с помощью предпочтительного клиента или средства.
Create таблицу
Books
со столбцамиid
,title
,year
иpages
.DROP TABLE IF EXISTS dbo.Books; CREATE TABLE dbo.Books ( id int NOT NULL PRIMARY KEY, title nvarchar(1000) NOT NULL, [year] int null, [pages] int null ) GO
Create другую таблицу
Chapters
со столбцамиid
,name
иpages
. Create столбецbook_id
со связью внешнего ключа со столбцомid
Books
таблицы.DROP TABLE IF EXISTS dbo.Chapters; CREATE TABLE dbo.Chapters ( id int NOT NULL PRIMARY KEY, [name] nvarchar(1000) NOT NULL, [pages] int null, book_id int NOT NULL, FOREIGN KEY (book_id) REFERENCES dbo.Books(id) ) GO
Убедитесь, что таблицы созданы с помощью некоторых распространенных SQL-запросов.
SELECT * FROM dbo.Books
SELECT * FROM dbo.Chapters
Примечание
На этом этапе запросы не должны возвращать никаких данных.
Файл конфигурации сборки
Теперь используйте ИНТЕРФЕЙС КОМАНДНОй строки DAB для создания файла конфигурации, сущностей и связей сущностей.
Откройте окно терминала.
Сохраните строка подключения базы данных SQL в виде переменной оболочки с именем
SQL_CONNECTION_STRING
.SQL_CONNECTION_STRING="<your-sql-connection-string>"
$SQL_CONNECTION_STRING="<your-sql-connection-string>"
Выполните команду
dab init
, указав следующие свойства.Значение database-type
mssql
graphql.multiple-create.enabled
true
host-mode
development
connection-string
Используйте переменную оболочки SQL_CONNECTION_STRING
, созданную на предыдущем шаге.dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRING
Выполните команду
dab add
, чтобы добавить сущность Book , указав следующие свойства.Значение source
dbo.Books
permissions
anonymous:*
dab add Book --source "dbo.Books" --permissions "anonymous:*"
Запустите
dab add
еще раз, чтобы добавить сущность Chapter , указав следующие свойства.Значение source
dbo.Chapters
permissions
anonymous:*
dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"
Выполните команду
dab update
, чтобы создать связь между книгами и главами , указав следующие свойства.Значение relationship
chapters
cardinality
many
dab update Book --relationship chapters --target.entity Chapter --cardinality many
Наконец, запустите
dab update
в последний раз, чтобы создать связь Chapter to Book , указав следующие свойства.Значение relationship
book
cardinality
one
dab update Chapter --relationship book --target.entity Book --cardinality one
Выполнение нескольких изменений создания
Чтобы завершить работу, используйте ИНТЕРФЕЙС КОМАНДНОй строки DAB, чтобы запустить API и протестировать конечную точку GraphQL с помощью Banana Cake Pop.
Запустите подсистему среды выполнения, используя текущую конфигурацию.
dab start
Перейдите к относительной конечной
/graphql
точке для запущенного приложения. Эта конечная точка открывает интерфейс Banana Cake Pop.Примечание
По умолчанию это будет .
https://localhost:5001/graphql
Создайте GraphQL изменения, чтобы создать три отдельные строки в двух таблицах в базе данных. Это изменение использует сущности
Book
иChapter
в одной операции "несколько создания". Используйте следующие свойства для изменения.Тип сущности ID Имя Страницы Год Book 1 Общие сведения о построителе API данных 200 2024 Глава 2 Файлы конфигурации. 150 Глава 3 Запущен 50 mutation { createBook( item: { id: 1 title: "Introduction to Data API builder" pages: 200 year: 2024 chapters: [ { id: 2 name: "Configuration files", pages: 150 } { id: 3 name: "Running", pages: 50 } ] } ) { id title pages year chapters { items { name pages } } } }
Просмотрите выходные данные изменения. Изменение создало связанные данные для обоих типов сущностей.
{ "data": { "createBook": { "id": 1, "title": "Introduction to Data API builder", "pages": 200, "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } } }
Используйте запрос GraphQL, чтобы получить все книги в базе данных, включая связанные с ними главы.
query { books { items { pages title year chapters { items { name pages } } } } }
Примечание
На этом этапе запрос должен вернуть одну книгу с двумя главами.
Просмотрите выходные данные этого запроса с массивом книг, включая вложенный массив глав.
{ "data": { "books": { "items": [ { "pages": 200, "title": "Introduction to Data API builder", "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } ] } } }
Снова подключитесь к базе данных SQL с помощью предпочтительного клиента или средства.
Убедитесь, что данные успешно созданы с помощью SQL-запроса.
SELECT c.name AS chapterName, c.pages AS chapterPages, b.title AS bookName, b.year AS releaseYear FROM dbo.Chapters c LEFT JOIN dbo.Books b ON b.id = c.book_id
Примечание
Этот запрос должен возвращать записи двух глав.