Pas schemawijzigingen toe en verifieer ze in Fabric Apps

Pas Rayfin-entiteitswijzigingen toe op de database met behulp van rayfin up of rayfin up db apply en controleer of het schema de server heeft bereikt.

Het bewerken van een klasse rayfin/data/ verandert de gedeployeerde database niet op zichzelf. Rayfin leest je entiteiten en genereert Data API Builder (DAB)-configuratie alleen wanneer je de wijzigingen expliciet toepast.

Gebruik rayfin up voor applicatie-updates

Voer npx rayfin up uit wanneer je je nieuwste entiteitswijzigingen wilt uitrollen naar een Fabric-app:

npx rayfin up

Deze opdracht:

  • Synchroniseert runtime-instellingen.
  • Past het databaseschema toe dat wordt gegenereerd door de decoratoren in rayfin/data/.
  • Bouwt en deployt statische content wanneer staticHosting ingeschakeld.

Voer het commando uit na elke wijziging in een bestand in rayfin/data/. Na de eerste implementatie updaten volgende runs dezelfde implementatie in plaats van een nieuwe aan te maken.

Pas alleen databaseschemawijzigingen toe

Gebruik npx rayfin up db apply wanneer je het databaseschema wilt toepassen zonder runtime-instellingen te synchroniseren of statische inhoud te deployen:

npx rayfin up db apply

Dit geavanceerde subcommando is handig wanneer je de frontend draait met npm run dev, de backend is al gedeployed, en je wilt het schema onafhankelijk itereren.

Als een wijziging dataverlies kan veroorzaken, zoals het weglaten van een kolom of het hernoemen van een tabel, blokkeert de CLI de operatie en beschrijft het de mogelijke impact. Nadat je de operaties hebt beoordeeld en het dataverlies accepteert, pas je de wijziging toe met --force:

npx rayfin up db apply --force

Caution

De --force optie kan permanent dataverlies veroorzaken. Gebruik het alleen nadat je elke operatie die door de CLI is gerapporteerd hebt bekeken.

Controleer het geïmplementeerde schema

Warning

Een succesvolle rayfin up of rayfin up db apply commando garandeert niet dat je frontend direct een nieuwe of gewijzigde entiteit kan bevragen. Controleer of de implementatie goed werkt voordat je de entiteit test.

Na elke wijziging in rayfin/data/, controleer de inzet:

npx rayfin up status

Als een nieuwe of gewijzigde entiteit nog steeds GraphQL-fouten teruggeeft nadat de implementatie gezond is, pas het schema expliciet toe en test vervolgens de entiteit opnieuw:

npx rayfin up db apply

Voeg alleen toe --force als de CLI een mogelijk destructieve wijziging meldt en je het dataverlies accepteert.

Voor machineleesbare deploymentstatus gebruik je JSON-output:

npx rayfin up status --json

Je kunt de JSON-respons gebruiken in een script dat wacht op een gezonde deployment voordat verdere controles worden uitgevoerd.

Volg een typische schema-workflow

# 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

Als stap 4 een mogelijk destructieve operatie meldt, bekijk deze dan voordat je het commando opnieuw uitvoert met --force.

Problemen met schemawijzigingen oplossen

GraphQL geeft een interne serverfout terug

Controleer elk @text() veld op de getroffen entiteit op een ontbrekende max waarde. Met Microsoft SQL Server @text() genereert zonder max een NVARCHAR(MAX) kolom, wat het genereren van GraphQL-schema's kan voorkomen.

Voeg expliciete maximale lengtes toe en pas dan het schema toe:

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

Bekijk de gerapporteerde operaties voordat je deze gebruikt --force.

De CLI meldt een mogelijk destructieve verandering

Bekijk de vermelde bewerkingen, inclusief weggelaten kolommen, versmalde types en hernoemde tabellen. Voer het commando --force pas opnieuw uit nadat je hebt bevestigd dat het dataverlies acceptabel is.

Het toepassen van het schema mislukt

Voer npx rayfin up status uit en wacht tot de services gezond zijn voordat je het toepassen van het schema opnieuw probeert.

De datadienst heeft geen dialect

Wanneer services.data.enabled is true, configureer dialect: mssql in rayfin/rayfin.yml.

services:
  data:
    enabled: true
    dialect: mssql

Gebruik een AI-prompt

Kopieer de volgende prompt naar GitHub Copilot of een andere codeeragent die toegang heeft tot je project en 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`.