Schemaänderungen in Fabric Apps anwenden und verifizieren

Wenden Sie Rayfin-Entitätsänderungen auf die Datenbank an, indem Sie rayfin up oder rayfin up db apply verwenden, und überprüfen Sie, ob das Schema den Server erreicht hat.

Das Bearbeiten einer Klasse in rayfin/data/ ändert die bereitgestellte Datenbank nicht automatisch. Rayfin liest deine Entitäten und generiert die Data API Builder (DAB)-Konfiguration nur, wenn du die Änderungen explizit anwendest.

Verwendung rayfin up für Anwendungsupdates

Führen Sie npx rayfin up immer dann aus, wenn Sie Ihre neuesten Entitätsänderungen in einer Fabric-App bereitstellen möchten:

npx rayfin up

Dieser Befehl:

  • Synchronisiert die Laufzeiteinstellungen.
  • Verwendet das von den Dekoratoren generierte Datenbankschema in rayfin/data/.
  • Erstellt statische Inhalte und stellt sie bereit, wenn staticHosting aktiviert ist.

Führe den Befehl nach jeder Änderung einer Datei in rayfin/data/aus. Nach der ersten Bereitstellung aktualisieren nachfolgende Durchläufe dieselbe Bereitstellung, anstatt eine neue zu erstellen.

Nur Datenbankschemaänderungen anwenden

Verwenden npx rayfin up db apply Sie, wenn Sie das Datenbankschema anwenden möchten, ohne die Laufzeiteinstellungen zu synchronisieren oder statische Inhalte bereitzustellen:

npx rayfin up db apply

Dieser erweiterte Unterbefehl ist nützlich, wenn du das Frontend mit npm run devausführst, das Backend ist bereits implementiert und du das Schema unabhängig iterieren möchtest.

Wenn eine Änderung Datenverlust verursachen könnte, wie zum Beispiel das Entfernen einer Spalte oder das Umbenennen einer Tabelle, blockiert die CLI die Operation und beschreibt die potenziellen Auswirkungen. Nachdem Sie die Operationen überprüft und den Datenverlust akzeptiert haben, wenden Sie die Änderung mit --forceFolgendes an:

npx rayfin up db apply --force

Caution

Die Option --force kann dauerhaften Datenverlust verursachen. Verwenden Sie es nur, nachdem Sie alle von der CLI gemeldeten Operationen überprüft haben.

Überprüfen Sie das bereitgestellte Schema

Warning

Ein erfolgreicher rayfin up Befehl rayfin up db apply garantiert nicht, dass Ihr Frontend sofort eine neue oder geänderte Entität abfragen kann. Überprüfen Sie, dass die Bereitstellung gesund ist, bevor Sie die Entität testen.

Überprüfen Sie nach jeder Änderung in rayfin/data/ das Deployment:

npx rayfin up status

Wenn eine neue oder geänderte Entität weiterhin GraphQL-Fehler erzeugt, nachdem die Bereitstellung erfolgreich läuft, wenden Sie das Schema explizit an und testen Sie die Entität anschließend erneut:

npx rayfin up db apply

Füge --force nur hinzu, wenn die CLI eine potenziell destruktive Änderung meldet und du den Datenverlust akzeptierst.

Für den maschinenlesbaren Bereitstellungsstatus verwenden Sie die JSON-Ausgabe:

npx rayfin up status --json

Du kannst die JSON-Antwort in einem Skript verwenden, das auf eine gesunde Bereitstellung wartet, bevor weitere Prüfungen durchgeführt werden.

Folgen Sie einem typischen 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

Wenn Schritt 4 eine potenziell zerstörerische Operation meldet, überprüfen Sie diese, bevor Sie den Befehl mit --forceerneut ausführen.

Probleme mit Schemaänderungen beheben

GraphQL liefert einen internen Serverfehler zurück

Überprüfen Sie jedes @text() Feld der betroffenen Entität auf einen fehlenden max Wert. Mit Microsoft SQL Server erzeugt @text() ohne max eine NVARCHAR(MAX)-Spalte, was die Generierung des GraphQL-Schemas verhindern kann.

Fügen Sie explizite maximale Längen hinzu und wenden Sie dann das Schema an:

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

Überprüfen Sie die gemeldeten Operationen, bevor Sie --force verwenden.

Die CLI meldet eine potenziell zerstörerische Veränderung

Überprüfen Sie die aufgeführten Operationen, einschließlich weggelassener Spalten, verengter Typen und umbenannter Tabellen. Führe den Befehl --force erst erneut aus, nachdem du bestätigt hast, dass der Datenverlust akzeptabel ist.

Das Anwenden des Schemas ist fehlgeschlagen.

Führe npx rayfin up status aus und warte, bis die Dienste wieder den Status „healthy“ erreicht haben, bevor du erneut versuchst, das Schema anzuwenden.

Der Datendienst hat keinen Dialekt

Wenn services.data.enableddialect: mssql ist, konfigurieren Sie rayfin/rayfin.yml in true.

services:
  data:
    enabled: true
    dialect: mssql

Verwenden Sie einen KI-Prompt

Kopieren Sie die folgende Eingabeaufforderung in GitHub Copilot oder einen anderen Programmieragenten, der Zugriff auf Ihr Projekt und Ihr Terminal hat:

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`.