Obs!
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Microsoft Fabric API for GraphQL gjør det enkelt å spørre og mutere data fra en Fabric SQL-database og andre Fabric-datakilder, for eksempel Data Warehouse og Lakehouse, med sterkt skrevne skjemaer og et rikt spørringsspråk, slik at utviklere kan opprette en intuitiv API uten å skrive egendefinert serverkode. Du kan bruke lagrede prosedyrer til å innkapsle og bruke kompleks forretningslogikk på nytt, inkludert inndatavalidering og datatransformasjon.
I dette eksemplet lærer vi hvordan du bruker en lagret prosedyre til å registrere nye produkter, med serversidelogikk for validering, formatering og ID-generering, som alle eksponeres gjennom en GraphQL-mutasjon i Fabric.
Komme i gang
Vi kommer i gang ved å opprette en SQL-database i Fabric:
- Velg Nytt element og SQL-database (forhåndsversjon) i Fabric-arbeidsområdet.
- Gi databasen et navn, og velg deretter Eksempeldata for raskt å opprette alle de nødvendige tabellene og dataene i databasen.
Scenario: registrere et nytt produkt
La oss si at du vil opprette et nytt produkt med:
- Validering av prislogikk (for eksempel. ListPrice > StandardCost)
- Transformasjon (for eksempel, stor forbokstav i den første bokstaven i produktnavnet, trim deretter med store bokstaver i produktnummeret)
- ProduktID-generering (ved å øke den nyeste Produkt-ID-en)
Trinn 1: Opprette den lagrede prosedyren
Her er en T-SQL-lagret prosedyre som omslutter all forretningslogikken vi trenger. Klikk ny spørring i SQL-databasen, og bruk følgende setning:
CREATE PROCEDURE SalesLT.RegisterProduct
@Name nvarchar(50),
@ProductNumber nvarchar(25),
@StandardCost money,
@ListPrice money,
@SellStartDate datetime
AS
BEGIN
SET NOCOUNT ON;
SET IDENTITY\_INSERT SalesLT.Product ON;
-- Validate pricing logic
IF @ListPrice <= @StandardCost
THROW 50005, 'ListPrice must be greater than StandardCost.', 1;
-- Transform product name: capitalize first letter only
DECLARE @CleanName nvarchar(50);
SET @CleanName = UPPER(LEFT(LTRIM(RTRIM(@Name)), 1)) + LOWER(SUBSTRING(LTRIM(RTRIM(@Name)), 2, 49));
-- Trim and uppercase product number
DECLARE @CleanProductNumber nvarchar(25);
SET @CleanProductNumber = UPPER(LTRIM(RTRIM(@ProductNumber)));
-- Generate ProductID by incrementing the latest existing ID
DECLARE @ProductID int;
SELECT @ProductID = ISNULL(MAX(ProductID), 0) + 1 FROM SalesLT.Product;
INSERT INTO SalesLT.Product (
ProductID,
Name,
ProductNumber,
StandardCost,
ListPrice,
SellStartDate
)
OUTPUT
inserted.ProductID,
inserted.Name,
inserted.ProductNumber,
inserted.StandardCost,
inserted.ListPrice,
inserted.SellStartDate
VALUES (
@ProductID,
@CleanName,
@CleanProductNumber,
@StandardCost,
@ListPrice,
@SellStartDate
);
END;
Klikk Kjør for å teste kjøringen. Du legger merke til en ny lagret prosedyre RegisterProduct under mappen Lagrede prosedyrer i SalesLT-databasen . Bruk følgende spørring til å teste prosedyrelogikken:
DECLARE @RC int
DECLARE @Name nvarchar(50)
DECLARE @ProductNumber nvarchar(25)
DECLARE @StandardCost money
DECLARE @ListPrice money
DECLARE @SellStartDate datetime
-- TODO: Set parameter values here.
Set @Name = 'test product'
Set @ProductNumber = 'tst-0012'
Set @StandardCost = '10.00'
Set @ListPrice = '9.00'
Set @SellStartDate = '2025-05-01T00:00:00Z'
EXECUTE @RC = \[SalesLT\].\[RegisterProduct\]
@Name
,@ProductNumber
,@StandardCost
,@ListPrice
,@SellStartDate
GO
Trinn 2: Opprette en GraphQL-API
Det er raskt, enkelt og enkelt å opprette en API fra SQL-tabellen. Du trenger bare å klikke ny API for GraphQL-knappen på BÅNDET i SQL-databasen og gi API-en et navn.
Velg deretter SalesLT-tabellene i databasen, og den lagrede prosedyren vi nettopp opprettet, og klikk deretter Last inn:
GraphQL API, skjema og alle resolvers genereres automatisk i sekunder basert på SQL-tabeller og lagret prosedyre.
Trinn 3: Kall prosedyren fra GraphQL
Når API-en er klar, blir den lagrede prosedyren tilgjengelig som en mutasjon i Fabric GraphQL-skjemaet. Gå til redigeringsprogrammet for spørringen, og utfør følgende mutasjon:
mutation {
executeRegisterProduct (
Name: " graphQL swag ",
ProductNumber: "gql-swag-001",
StandardCost: 10.0,
ListPrice: 15.0,
SellStartDate: "2025-05-01T00:00:00Z"
) {
ProductID
Name
ProductNumber
StandardCost
ListPrice
SellStartDate
}
}
Tips
- Fabric GraphQL genererer automatisk mutasjonsfelt for lagrede prosedyrer som returnerer et resultatsett definert i utdataene i prosedyren.
- Forretningslogikken er inne i prosedyren, ikke klienten.
- Bruk deterministisk ID-generering bare hvis du ikke er avhengig av identitetskolonner.
Hvis du eksponerer lagrede prosedyrer via Stoff-API-er, får du muligheten til å definere robuste, konsekvente regler i SQL for dataene dine, og få tilgang til dem på en ren måte via GraphQL.