Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Mit Projektverweise in SQL-Datenbankprojekten können Sie Abhängigkeiten zwischen Ihrem SQL-Projekt und anderen Projekten erstellen. Es gibt zwei haupttypen von Projektverweise:
-
Datenbankverweise – Abhängigkeiten zwischen SQL-Projekten oder Verweisen auf
.dacpacDateien und NuGet-Pakete, die Datenbankobjektdefinitionen bereitstellen. - .NET-Projektverweise – Verweise von .NET-Projekten auf SQL-Projekte für Szenarien wie Integrationstests, Bereitstellungsautomatisierung und Codegenerierung.
Wenn Sie verstehen, wann und wie Sie jeden Referenztyp verwenden, können Sie ihren Datenbankentwicklungsworkflow effektiv strukturieren.
Datenbankverweise
Datenbankverweise ermöglichen es einem SQL-Projekt, Objekte aus einem anderen SQL-Projekt, einer .dacpac Datei oder einem veröffentlichten NuGet-Paket zu integrieren. Diese Verweise werden verwendet, wenn Ihre Datenbankobjekte von Objekten abhängen, die an anderer Stelle definiert sind, z. B. Tabellen in einem freigegebenen Schema oder Systemdatenbankobjekten.
Ein einfacher Datenbankverweis auf ein anderes SQL-Projekt in derselben Lösung sieht wie folgt aus:
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>
Datenbankverweise unterstützen drei Beziehungstypen:
- Dieselbe Datenbank – Objekte aus dem referenzierten Projekt werden Teil desselben Datenbankmodells.
- Unterschiedliche Datenbank, derselbe Server – Referenzobjekte mit dreiteiliger Benennung mit einer SQLCMD-Variablen für den Datenbanknamen.
- Unterschiedliche Datenbank, unterschiedliche Server – Referenzobjekte mit vierteiliger Benennung mit SQLCMD-Variablen für Server- und Datenbanknamen.
Ausführliche Informationen zum Konfigurieren von Datenbankverweise, einschließlich Beispiele für jeden Beziehungstyp und Anleitungen zum Erstellen und Veröffentlichen von Projekten mit Verweisen, finden Sie in der Übersicht über Datenbankverweise.
.NET-Projektverweise
.NET-Projekte können auf SQL-Projekte verweisen, um die Datenbankentwicklung in Anwendungscode zu integrieren. Dieser Verweistyp ist nützlich, wenn Ihre .NET-Anwendung zugriff auf die Buildausgabe des SQL-Projekts (die .dacpac Datei) für Test-, Bereitstellungs- oder Codegenerierungszwecke benötigt.
Anwendungsfälle
Häufige Szenarien zum Verweisen auf ein SQL-Projekt aus einem .NET-Projekt umfassen:
- Integrationstests – Testprojekte, die das Datenbankschema vor dem Ausführen von Tests in einem Testcontainer oder einer lokalen Instanz bereitstellen.
-
Bereitstellungsautomatisierung – Konsolenanwendungen oder Tools, die
.dacpacprogrammgesteuert in Zielumgebungen bereitstellen. - Modellcodegenerierung – Anwendungen, die Code basierend auf dem im SQL-Projekt definierten Datenbankschema generieren.
Konfigurieren der Projektreferenz
Wenn Sie einem SQL-Projekt einen Projektverweis aus einem .NET-Projekt hinzufügen, müssen Sie das ReferenceOutputAssembly="false" Attribut einschließen. Dieses Attribut weist den .NET-Buildprozess an, das SQL-Projekt als Buildabhängigkeit zu behandeln, ohne es als .NET-Assembly zu referenzieren.
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>
Die ReferenceOutputAssembly="false" Einstellung ist erforderlich, da SQL-Projekte eine .dacpac Datei als primäre Ausgabe erstellen, nicht als .NET-Assembly. Ohne dieses Attribut versucht der .NET-Buildprozess, .dacpac als eine Assembly zu laden und schlägt mit einem ähnlichen Fehler fehl:
error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.
Zugreifen auf DACPAC in Ihrem .NET-Projekt
Nachdem Sie die Projektreferenz konfiguriert haben, erstellt das SQL-Projekt vor dem .NET-Projekt. Die .dacpac Datei ist im Ausgabeverzeichnis des SQL-Projekts (in der Regel bin/Debug oder bin/Release) verfügbar.
Um im .NET-Code programmgesteuert auf .dacpac zuzugreifen, verwenden Sie den Dateipfad relativ zur Projektstruktur. Beispiel: In einem Integrationstest, der Testcontainer verwendet, um eine SQL Server-Instanz zu erstellen:
// Path to the dacpac file built by the referenced SQL project
var dacpacPath = Path.Combine(
Directory.GetCurrentDirectory(),
"..", "..", "..", "..",
"Database1", "bin", "Debug",
"Database1.dacpac");
// Use DacFx to deploy the dacpac to your test database
var dacServices = new DacServices(connectionString);
using var dacpac = DacPackage.Load(dacpacPath);
dacServices.Deploy(dacpac, "TestDatabase");
Kopieren des dacpac in das Ausgabeverzeichnis
Um den Zugriff auf die .dacpac Datei zu erleichtern, konfigurieren Sie Ihr .NET-Projekt so, dass es während des Builds in das Ausgabeverzeichnis kopiert wird. Füge deiner .csproj-Datei die folgende Konfiguration hinzu:
<ItemGroup>
<None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
CopyToOutputDirectory="PreserveNewest"
Link="Database1.dacpac" />
</ItemGroup>
Diese Konfiguration kopiert die Datei in das .dacpac Ausgabeverzeichnis ihres .NET-Projekts, sodass Sie mithilfe eines einfacheren Pfads darauf verweisen können:
var dacpacPath = Path.Combine(
AppContext.BaseDirectory,
"Database1.dacpac");