Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Microsoft Fabric API til GraphQL gør det nemt at forespørge på og mutere data fra en Fabric SQL-database og andre Fabric-datakilder, f.eks. Data Warehouse og Lakehouse, med stærkt indtastede skemaer og et omfattende forespørgselssprog, der giver udviklere mulighed for at oprette en intuitiv API uden at skrive brugerdefineret serverkode. Du kan bruge lagrede procedurer til at indkapsle og genbruge kompleks forretningslogik, herunder inputvalidering og datatransformation.
I dette eksempel lærer vi, hvordan du bruger en lagret procedure til at registrere nye produkter med logik på serversiden til validering, formatering og generering af id, der alle eksponeres via en GraphQL-mutation i Fabric.
Kom i gang
Vi kommer i gang ved at oprette en SQL-database i Fabric:
- I dit Fabric-arbejdsområde skal du vælge Nyt element og derefter SQL-database (prøveversion).
- Giv databasen et navn, og vælg derefter Eksempeldata for hurtigt at oprette alle de påkrævede tabeller og data i databasen.
Scenarie: Registrer et nyt produkt
Lad os antage, at du vil oprette et nyt produkt med:
- Validering af prislogik (f.eks. ListPrice > StandardCost)
- Transformation (f.eks. første bogstav i produktnavnet med stort, trim derefter produktnummeret med store bogstaver)
- Oprettelse af ProductID (ved at øge det nyeste ProductID)
Trin 1: Opret den lagrede procedure
Her er en lagret T-SQL-procedure, der indkapsler al den forretningslogik, vi har brug for. Klik på Ny forespørgsel i SQL-databasen, og brug følgende sætning:
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;
Klik på Kør for at teste udførelsen. Du bemærker en ny lagret procedure RegisterProduct under mappen Lagrede procedurer i SalesLT-databasen . Brug følgende forespørgsel til at teste procedurelogikken:
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
Trin 2: Opret en GraphQL-API
Det er hurtigt, nemt og ligetil at oprette en API fra din SQL-tabel. Du skal blot klikke på knappen Ny API til GraphQL på båndet SQL-database og give din API et navn.
Vælg derefter SalesLT-tabellerne i databasen og den lagrede procedure, vi lige har oprettet, og klik derefter på Indlæs:
GraphQL-API'en, skemaet og alle fortolkere genereres automatisk i sekunder baseret på SQL-tabellerne og den lagrede procedure.
Trin 3: Kald proceduren fra GraphQL
Når API'en er klar, bliver den lagrede procedure tilgængelig som en mutation i Fabric GraphQL-skemaet. Gå til forespørgselseditoren, og udfør følgende mutation:
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 mutationsfelter for lagrede procedurer, der returnerer et resultatsæt, der er defineret i resultatet af proceduren.
- Forretningslogik lever i proceduren, ikke klienten.
- Brug kun generering af deterministisk id, hvis du ikke er afhængig af identitetskolonner.
Hvis du eksponerer lagrede procedurer via Fabric API'er, får du mulighed for at definere robuste, ensartede regler i SQL for dine data og få ren adgang til dem via GraphQL.