Not
Å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.
Microsoft Fabric API för GraphQL gör det enkelt att fråga efter och mutera data från en Fabric SQL-databas och andra Infrastrukturdatakällor som Data Warehouse och Lakehouse, med starkt skrivna scheman och ett omfattande frågespråk som gör att utvecklare kan skapa ett intuitivt API utan att skriva anpassad serverkod. Du kan använda lagrade procedurer för att kapsla in och återanvända komplex affärslogik, inklusive validering av indata och datatransformering.
I det här exemplet lär vi oss hur vi använder en lagrad procedur för att registrera nya produkter, med serverlogik för validering, formatering och ID-generering, som alla exponeras via en GraphQL-mutation i Fabric.
Kom igång
Vi kommer igång genom att skapa en SQL-databas i Fabric:
- I din Fabric-arbetsyta väljer du Nytt objekt och sedan SQL-databas (förhandsversion).
- Ge databasen ett namn och välj sedan Exempeldata för att snabbt skapa alla nödvändiga tabeller och data i databasen.
Scenario: registrera en ny produkt
Anta att du vill skapa en ny produkt med:
- Validering av prislogik (till exempel. ListPrice > StandardCost)
- Transformering (t.ex. gör stora bokstäver på den första bokstaven i produktnamnet, trimma och gör sedan produktnumret versalt)
- ProductID-generering (genom att öka det senaste ProductID)
Steg 1: Skapa den lagrade proceduren
Här är en T-SQL-lagrad procedur som kapslar in all affärslogik som vi behöver. I SQL-databasen klickar du på Ny fråga och använder följande instruktion:
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;
Klicka på Kör för att testa. Du märker en ny lagrad procedur RegisterProduct under mappen Lagrade procedurer i SalesLT-databasen. Använd följande fråga för att testa procedurlogik:
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
Steg 2: Skapa ett GraphQL-API
Det är snabbt, enkelt och enkelt att skapa ett API från din SQL-tabell. Du behöver bara klicka på knappen Nytt API för GraphQL i menyfliksområdet FÖR SQL-databas och ge API:et ett namn.
Välj sedan SalesLT-tabellerna i databasen och den lagrade procedur som vi nyss skapade och klicka sedan på Läs in:
GraphQL-API:n, schemat och alla lösare genereras automatiskt på några sekunder baserat på SQL-tabellerna och lagringsproceduren.
Steg 3: Anropa proceduren från GraphQL
När API:et är klart blir den lagrade proceduren tillgänglig som en mutation i Fabric GraphQL-schemat. Gå till frågeredigeraren och kör följande 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 genererar automatiskt mutationsfält för lagrade procedurer som returnerar en resultatuppsättning som definierats i procedurens utdata.
- Affärslogik finns i proceduren, inte klienten.
- Använd endast deterministisk ID-generering om du inte förlitar dig på identitetskolumner.
Genom att exponera lagrade procedurer via Infrastruktur-API:er kan du definiera robusta, konsekventa regler i SQL för dina data och få åtkomst till dem rent via GraphQL.