Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Med projektreferenser i SQL-databasprojekt kan du skapa beroenden mellan ditt SQL-projekt och andra projekt. Det finns två primära typer av projektreferenser:
-
Databasreferenser – Beroenden mellan SQL-projekt eller referenser till
.dacpacfiler och NuGet-paket som tillhandahåller definitioner av databasobjekt. - .NET-projektreferenser – Referenser från .NET-projekt till SQL-projekt för scenarier som integreringstestning, distributionsautomatisering och kodgenerering.
När du förstår när och hur du använder varje typ av referens kan du strukturera arbetsflödet för databasutveckling effektivt.
Databasreferenser
Med databasreferenser kan ett SQL-projekt införliva objekt från ett annat SQL-projekt, en .dacpac fil eller ett publicerat NuGet-paket. Dessa referenser används när dina databasobjekt är beroende av objekt som definierats någon annanstans, till exempel tabeller i ett delat schema eller systemdatabasobjekt.
En grundläggande databasreferens till ett annat SQL-projekt i samma lösning ser ut så här:
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>
Databasreferenser stöder tre relationstyper:
- Samma databas – Objekt från det refererade projektet blir en del av samma databasmodell.
- Annan databas, samma server – Referensobjekt med namngivning i tre delar med en SQLCMD-variabel för databasnamnet.
- Annan databas, annan server – Referensobjekt med namngivning i fyra delar med SQLCMD-variabler för både server- och databasnamn.
Detaljerad information om hur du konfigurerar databasreferenser, inklusive exempel för varje relationstyp och vägledning för att skapa och publicera projekt med referenser finns i Översikt över databasreferenser.
.NET-projektreferenser
.NET-projekt kan referera till SQL-projekt för att integrera databasutveckling med programkod. Den här referenstypen är användbar när .NET-programmet behöver åtkomst till SQL-projektets byggutdata ( .dacpac filen) för testning, distribution eller kodgenerering.
Användningsfall
Vanliga scenarier för att referera till ett SQL-projekt från ett .NET-projekt är:
- Integreringstester – Testa projekt som distribuerar databasschemat till en testcontainer eller lokal instans innan testerna körs.
-
Distributionsautomatisering – Konsolprogram eller verktyg som programmatiskt distribuerar
.dacpactill målmiljöer. - Modellkodgenerering – Program som genererar kod baserat på databasschemat som definierats i SQL-projektet.
Konfigurera projektreferensen
När du lägger till en projektreferens från ett .NET-projekt i ett SQL-projekt måste du inkludera attributet ReferenceOutputAssembly="false" . Det här attributet instruerar .NET-byggprocessen att behandla SQL-projektet som ett byggberoende utan att försöka referera till det som en .NET-sammansättning.
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>
Inställningen ReferenceOutputAssembly="false" krävs eftersom SQL-projekt skapar en .dacpac fil som primära utdata, inte en .NET-sammansättning. Utan det här attributet försöker .NET-kompileringsprocessen läsa in .dacpac som en sammansättning och misslyckas med ett fel som liknar:
error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.
Få åtkomst till DACPAC i .NET-projektet
När du har konfigurerat projektreferensen skapas SQL-projektet före .NET-projektet. Filen .dacpac är tillgänglig i SQL-projektets utdatakatalog (vanligtvis bin/Debug eller bin/Release).
Om du vill komma åt .dacpac programmatiskt i .NET-koden refererar du till filsökvägen i förhållande till projektstrukturen. I ett integrationstest som till exempel använder Testcontainers för att skapa en SQL Server-instans:
// 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");
Kopiera dacpac till utdatakatalogen
För enklare åtkomst till .dacpac filen konfigurerar du .NET-projektet så att det kopieras till utdatakatalogen under bygget. Lägg till följande konfiguration i .csproj filen:
<ItemGroup>
<None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
CopyToOutputDirectory="PreserveNewest"
Link="Database1.dacpac" />
</ItemGroup>
Den här konfigurationen .dacpac kopierar filen till .NET-projektets utdatakatalog så att du kan referera till den med hjälp av en enklare sökväg:
var dacpacPath = Path.Combine(
AppContext.BaseDirectory,
"Database1.dacpac");