Anvend og verificér skemaændringer i Fabric Apps

Anvend Rayfin-entitetsændringer på databasen ved at bruge rayfin up eller rayfin up db apply, og verificér, at skemaet nåede serveren.

At redigere en klasse ændrer rayfin/data/ ikke den deployerede database i sig selv. Rayfin læser dine enheder og genererer kun Data API Builder (DAB)-konfiguration, når du eksplicit anvender ændringerne.

Brug rayfin up til applikationsopdateringer

Kør npx rayfin up dengang, du vil implementere dine seneste entitetsændringer i en Fabric-app:

npx rayfin up

Denne kommando:

  • Synkroniserer runtime-indstillinger.
  • Anvender databaseskemaet genereret af dekoratorerne i rayfin/data/.
  • Bygger og deployerer statisk indhold, når staticHosting det er aktiveret.

Kør kommandoen efter hver ændring i en fil i rayfin/data/. Efter den første udrulning opdaterer efterfølgende kørsler den samme udrulning i stedet for at oprette en ny.

Anvend kun ændringer i databaseskemaet

Brug npx rayfin up db apply den, når du vil anvende databaseskemaet uden at synkronisere runtime-indstillinger eller udrulle statisk indhold:

npx rayfin up db apply

Denne avancerede underkommando er nyttig, når du kører frontend med npm run dev, backenden er allerede deployed, og du vil iterere på skemaet uafhængigt.

Hvis en ændring kan forårsage datatab, såsom at fjerne en kolonne eller omdøbe en tabel, blokerer CLI'en operationen og beskriver den potentielle påvirkning. Efter du har gennemgået driften og accepteret datatabet, anvender du ændringen med --force:

npx rayfin up db apply --force

Forsigtighed

Muligheden --force kan forårsage permanent datatab. Brug det kun, efter du har gennemgået alle operationer, som CLI har rapporteret.

Verificér det implementerede skema

Advarsel!

En succesfuld rayfin up kommando rayfin up db apply garanterer ikke, at din frontend straks kan forespørge en ny eller ændret enhed. Tjek at udrulningen er sund, før du tester entiteten.

Efter enhver ændring i rayfin/data/, tjek udrulningen:

npx rayfin up status

Hvis en ny eller ændret enhed stadig returnerer GraphQL-fejl efter, at udrulningen er blevet sund, anvend skemaet eksplicit, og test derefter entiteten igen:

npx rayfin up db apply

Tilføj --force kun, hvis CLI rapporterer en potentielt destruktiv ændring, og du accepterer datatabet.

For maskinlæsbar udrulningsstatus, brug JSON-output:

npx rayfin up status --json

Du kan bruge JSON-svaret i et script, der venter på en sund udrulning, før der køres yderligere kontroller.

Følg en typisk skema-arbejdsgang

# 1. Edit an entity, such as rayfin/data/Todo.ts.
# 2. Apply the application changes.
npx rayfin up

# 3. Verify that the deployment is healthy.
npx rayfin up status

# 4. If the changed entity still fails, apply the schema explicitly.
npx rayfin up db apply

Hvis trin 4 rapporterer en potentielt destruktiv operation, gennemgå det, før kommandoen gentages med --force.

Fejlsøg skemaændringer

GraphQL returnerer en intern serverfejl

Tjek hvert @text() felt på den berørte enhed for en manglende max værdi. Med Microsoft SQL Server genererer @text() uden max en NVARCHAR(MAX) kolonne, som kan forhindre generering af GraphQL-skemaer.

Tilføj eksplicitte maksimale længder, og anvend derefter skemaet:

@text({ max: 200 })
title!: string;
npx rayfin up db apply --force

Gennemgå de rapporterede operationer, før du bruger --force.

CLI rapporterer om en potentielt ødelæggende ændring

Gennemgå de listede operationer, inklusive droppede kolonner, indsnævrede typer og omdøbte tabeller. Gentag kun kommandoen, --force når du har bekræftet, at datatabet er acceptabelt.

Skemaanvendelsen fejler

Kør npx rayfin up status, og vent til tjenesterne bliver sunde, før du prøver skema-anvendelsen igen.

Datatjenesten har ingen dialekt

Når services.data.enabled er true, konfigurerer dialect: mssql i rayfin/rayfin.yml.

services:
  data:
    enabled: true
    dialect: mssql

Brug en AI-prompt

Kopier følgende prompt ind i GitHub Copilot eller en anden kodningsagent, der har adgang til dit projekt og terminal:

I just added a new field to an entity in my Rayfin project's rayfin/data/ folder. Run
`npx rayfin up` to apply the change, then run `npx rayfin up status` to confirm the
deployment is healthy. If querying the changed entity still fails after that, run
`npx rayfin up db apply` and check again. Review any potentially destructive operations with me before using `--force`.