Nextended.Aspire.Hosting.DbTools
📚 Vollständige API-Referenz — jeder öffentliche Typ und Member, erzeugt aus der kompilierten Assembly.
Datenbank-Werkzeuge für einen Aspire-App-Host. Das erste: eine Datenbank-Ressource aus einer bestehenden Datenbank füllen.
Installation
dotnet add package Nextended.Aspire.Hosting.DbToolsWas das Paket macht
Ein Aufruf füllt eine Datenbank-Ressource aus einer bestehenden Datenbank — Schema und Daten:
var dev = builder.AddPostgres("pg");
// Von einem Server, den dieser Stack nicht modelliert
dev.AddDatabase("shop")
.WithCloneFrom("Host=staging.internal;Database=shop;Username=reader;Password=…");
// Oder von einer anderen Ressource darin
var prod = builder.AddPostgres("prod").AddDatabase("shop");
dev.AddDatabase("shop-copy").WithCloneFrom(prod);Es kommt die ganze Datenbank an: Tabellen, Zeilen, Indizes, Constraints, Views, Routinen und die Sequenzen mit dem Stand, auf dem sie stehen.
Wann es sich lohnt
Aspire legt leere Datenbanken an, und WithCreationScript / WithInitFiles füllen sie aus SQL, das man selbst geschrieben hat. Das reicht für die meisten Stacks. Dieses Paket ist für die Fälle, in denen es nicht reicht:
- ein Entwicklungs-Stack, der die Strukturen und Größen einer echten Datenbank braucht, keine Fixture,
- eine neue Umgebung, aus einer bestehenden gebaut,
- eine Kopie von Staging, um eine Migration daran zu probieren, bevor sie echt läuft.
Wenn ein Seed-Skript genügt, nimm das Seed-Skript.
Engines und Quellen
Fünf Engines, jede mit den Werkzeugen ihrer eigenen Engine: PostgreSQL (pg_dump | psql), MySQL/MariaDB (mysqldump | mysql), SQL Server (BACPAC über sqlpackage), MongoDB (mongodump | mongorestore) und Redis (über Replikation).
Vier Wege zur Quelle, für jede Engine: die typisierte Ressource, eine Verbindungszeichenfolge als Text, ein ParameterResource — dort gehört eine mit Passwort hin — und AddConnectionString, wenn der Stack die Zeichenfolge nur bekommen hat.
Ein Klon ist eine Container-Ressource, kein Code im App-Host. Deshalb läuft er auch beim Veröffentlichen: Wer aus einem alten System ein neues baut, braucht genau das, denn der App-Host selbst läuft dann nicht. Standardmäßig lässt ein Klon ein Ziel, in dem schon etwas steht, in Ruhe; Overwrite = true ersetzt es, und das muss man sagen.
Die vollständige Referenz — alle Optionen, die Eigenheiten jeder Engine und die Dinge, die man vor dem Einsatz wissen sollte (SQL Server braucht beim ersten Klon Internet; ein Klon anonymisiert nichts) — steht auf der englischen Seite:
📖 Nextended.Aspire.Hosting.DbTools — vollständige Referenz (englisch)
Ebenso ausführlich und ebenfalls englisch ist das Paket-README:
📄 Nextended.Aspire.Hosting.DbTools/README.md
Ausführbares Beispiel
Im Repository liegt ein vollständiger, startbarer App-Host — er klont zweimal, einmal aus jeder Art von Quelle, und öffnet beide Kopien in einem Browser-Studio:
git clone https://github.com/fgilde/Nextended.git
cd Nextended/Tests/TestProjects/DbTools.AppHost
dotnet runDanach hat das Studio zwei Verbindungen: NORTHWIND mit acht Tabellen, ihren Fremdschlüsseln, zwölf Indizes und der View order_totals, geklont von einer Verbindungszeichenfolge; und PARTS mit Lieferanten, Teilen, einer View und einer Funktion, geklont aus einer anderen Ressource desselben Stacks. Keine dieser Tabellen ist im App-Host beschrieben — und jeder Klon ist im Dashboard eine eigene Ressource, deren Log die Dump- und Restore-Ausgabe ist.
Unterstützte Frameworks
net8.0net9.0net10.0
Links
Lizenz
MIT