Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Data API Builder (DAB) supporta la combinazione di più operazioni di mutazione in una singola transazione. Più mutazioni supportano scenari in cui è necessario creare più elementi appartenenti alla stessa entità o creare più elementi appartenenti a un'entità correlata. Questa guida illustra uno scenario di esempio che usa un'operazione di mutazione multipla.
Prerequisiti
- Sql Server e database esistenti.
- CLI generatore di API dati. Installare l'interfaccia della riga di comando
- Un client di database (SQL Server Management Studio, Azure Data Studio e così via)
- Se non è installato un client, installare Azure Data Studio
Creare tabelle
Per iniziare, creare due tabelle di base per rappresentare libri e i rispettivi capitoli. I libri hanno una relazione uno-a-molti con i capitoli corrispondenti.
Connettersi al database SQL usando il client o lo strumento preferito.
Creare una tabella denominata
Bookscon le colonneid,title,yearepages.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 ) GOCreare un'altra tabella denominata
Chapterscon le colonneid,nameepages. Creare unabook_idcolonna con una relazione di chiave esterna con laidcolonna dellaBookstabella.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) ) GOVerificare che le tabelle vengano create con alcune query SQL comuni.
SELECT * FROM dbo.BooksSELECT * FROM dbo.ChaptersAnnotazioni
A questo punto, le query non devono restituire dati.
File di configurazione della compilazione
Ora, utilizzare l'interfaccia a riga di comando di DAB per creare un file di configurazione, le entità, e le relazioni tra entità.
Aprire un terminale
Archiviare la stringa di connessione del database SQL come variabile della shell denominata
SQL_CONNECTION_STRING.SQL_CONNECTION_STRING="<your-sql-connection-string>"$SQL_CONNECTION_STRING="<your-sql-connection-string>"Eseguire
dab initspecificando le proprietà seguenti.Valore database-typemssqlgraphql.multiple-create.enabledtruehost-modedevelopmentconnection-stringUsare la variabile shell SQL_CONNECTION_STRINGcreata nel passaggio precedente.dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRINGEseguire
dab addper aggiungere un'entità Book che specifica le proprietà seguenti.Valore sourcedbo.Bookspermissionsanonymous:*dab add Book --source "dbo.Books" --permissions "anonymous:*"Eseguire
dab adddi nuovo per aggiungere un'entità Chapter specificando ora le proprietà seguenti.Valore sourcedbo.Chapterspermissionsanonymous:*dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"Eseguire
dab updateper creare la relazione Book to Chapter specificando le proprietà seguenti.Valore relationshipchapterscardinalitymanydab update Book --relationship chapters --target.entity Chapter --cardinality manyEseguire infine
dab updateun'ultima volta per creare la relazione Chapter to Book specificando le proprietà seguenti.Valore relationshipbookcardinalityonedab update Chapter --relationship book --target.entity Book --cardinality one
Eseguire più mutazioni di creazione
Per concludere, usare l'interfaccia della riga di comando di DAB per eseguire l'API e testare l'endpoint GraphQL usando Banana Cake Pop.
Avviare il motore di runtime usando la configurazione corrente.
dab startVai all'endpoint relativo dell'applicazione
/graphqlin esecuzione. Questo endpoint apre l'interfaccia Banana Cake Pop.Annotazioni
Per impostazione predefinita, si tratta di
https://localhost:5001/graphql.Creare una mutazione GraphQL per creare tre righe distinte tra due tabelle nel database. Questa mutazione usa entrambe le entità
BookeChapterin un'unica operazione di creazione multipla. Utilizzare le proprietà seguenti per la mutazione.Tipo di entità Documento d'identità Nome Pagine Anno Libro 1 Introduzione a Generatore API dati 200 2024 Capitolo 2 File di configurazione 150 Capitolo 3 Correre 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 } } } }Osservare l'output della mutazione. La mutazione ha creato dati correlati per entrambi i tipi di entità.
{ "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 } ] } } } }Usare una query GraphQL per recuperare tutti i libri nel database, inclusi i capitoli correlati.
query { books { items { pages title year chapters { items { name pages } } } } }Annotazioni
A questo punto, la query deve restituire il singolo libro con due capitoli.
Osservare l'output di questa query con una matrice di libri, inclusa la matrice nidificata di capitoli.
{ "data": { "books": { "items": [ { "pages": 200, "title": "Introduction to Data API builder", "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } ] } } }Connettersi di nuovo al database SQL usando il client o lo strumento preferito.
Verificare che i dati siano stati creati correttamente usando una query 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_idAnnotazioni
Questa query deve restituire due record relativi al capitolo.