Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Data API Builder (DAB) har stöd för att kombinera flera mutationsåtgärder till en enda transaktion. Flera mutationer stöder scenarier där du behöver skapa flera objekt som tillhör samma entitet eller skapa flera objekt som tillhör en relaterad entitet. Den här guiden går igenom ett exempelscenario med hjälp av en åtgärd med flera mutationer.
Förutsättningar
- Befintlig SQL-server och databas.
- Data-API-byggarens CLI. Installera CLI
- En databasklient (SQL Server Management Studio, Azure Data Studio osv.)
- Om du inte har en klient installerad installerar du Azure Data Studio
Skapa tabeller
Börja med att skapa två grundläggande tabeller som representerar böcker och deras respektive kapitel. Böcker har en en-till-många-relation med sina motsvarande kapitel.
Anslut till SQL-databasen med den klient eller det verktyg du föredrar.
Skapa en tabell med namnet
Booksmedidkolumnerna ,title,yearochpages.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 ) GOSkapa en annan tabell vid namn
Chaptersmed kolumnernaid,nameochpages. Skapa enbook_idkolumn med en sekundärnyckelrelation tillidkolumnen iBookstabellen.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) ) GOKontrollera att tabellerna har skapats med några vanliga SQL-frågor.
SELECT * FROM dbo.BooksSELECT * FROM dbo.ChaptersAnmärkning
I det här läget bör frågorna inte returnera några data.
Skapa konfigurationsfil
Använd nu DAB CLI för att skapa en konfigurationsfil, entiteter och entitetsrelationer.
Öppna en terminal
Lagra sql-databasanslutningssträngen som en gränssnittsvariabel med namnet
SQL_CONNECTION_STRING.SQL_CONNECTION_STRING="<your-sql-connection-string>"$SQL_CONNECTION_STRING="<your-sql-connection-string>"Kör
dab initoch ange följande egenskaper.Värde database-typemssqlgraphql.multiple-create.enabledtruehost-modedevelopmentconnection-stringAnvänd gränssnittsvariabeln SQL_CONNECTION_STRINGsom skapades i föregående steg.dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRINGKör
dab addför att lägga till en bokentitet som anger följande egenskaper.Värde sourcedbo.Bookspermissionsanonymous:*dab add Book --source "dbo.Books" --permissions "anonymous:*"Kör
dab addigen för att lägga till en kapitelentitet som nu anger följande egenskaper.Värde sourcedbo.Chapterspermissionsanonymous:*dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"Kör
dab updateför att skapa relationen Bok till kapitel med följande egenskaper.Värde relationshipchapterscardinalitymanydab update Book --relationship chapters --target.entity Chapter --cardinality manydab updateKör slutligen en sista gång för att skapa relationen Chapter to Book som anger följande egenskaper.Värde relationshipbookcardinalityonedab update Chapter --relationship book --target.entity Book --cardinality one
Utföra flera skapande mutationer
För att avsluta, använd DAB CLI för att köra API:et och testa GraphQL-slutpunkten med Banana Cake Pop.
Starta körningsmotorn med den aktuella konfigurationen.
dab startNavigera till den
/graphqlrelativa slutpunkten för ditt program som körs. Den här slutpunkten öppnar Banana Cake Pop-gränssnittet.Anmärkning
Som standard skulle detta vara
https://localhost:5001/graphql.Skapa en GraphQL-mutation för att skapa tre distinkta rader i två tabeller i databasen. Den här mutationen använder både entiteterna
BookochChapteri en enda "multiple create"-åtgärd. Använd följande egenskaper för mutationen.Entitetstyp ID-nummer Namn Sidor År Bok 1 Introduktion till Data API-byggare 200 2024 Kapitel 2 Konfigurationsfiler 150 Kapitel 3 Springa 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 } } } }Observera utdata från mutationen. Mutationen skapade relaterade data för båda entitetstyperna.
{ "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 } ] } } } }Använd en GraphQL-fråga för att hämta alla böcker i databasen, inklusive deras relaterade kapitel.
query { books { items { pages title year chapters { items { name pages } } } } }Anmärkning
I det här läget ska frågan returnera den enskilda boken med två kapitel.
Observera utdata från den här frågan med en matris med böcker, inklusive deras kapslade matris med kapitel.
{ "data": { "books": { "items": [ { "pages": 200, "title": "Introduction to Data API builder", "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } ] } } }Anslut till SQL-databasen igen med den klient eller det verktyg du föredrar.
Kontrollera att dina data har skapats med hjälp av en SQL-fråga.
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_idAnmärkning
Den här sökfrågan ska returnera två kapitelposter.