Megosztás:


Projekthivatkozások áttekintése

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Az SQL Database-projektek projekthivatkozásaival függőségeket hozhat létre az SQL-projekt és más projektek között. A projekthivatkozások két elsődleges típusa van:

  • Adatbázis-hivatkozások – Az SQL-projektek közötti függőségek, illetve az adatbázis-objektumdefiníciókat biztosító fájlokra és NuGet-csomagokra .dacpac mutató hivatkozások.
  • .NET-projekthivatkozások – Hivatkozások .NET-projektektől SQL-projektekig olyan forgatókönyvekhez, mint az integrációs tesztelés, az üzembe helyezés automatizálása és a kódgenerálás.

Ha tisztában van azzal, hogy mikor és hogyan használhatja az egyes referenciatípusokat, hatékonyan strukturálhatja az adatbázis-fejlesztési munkafolyamatot.

Adatbázis-hivatkozások

Az adatbázis-hivatkozások lehetővé teszik, hogy az SQL-projektek egy másik SQL-projektből, fájlból .dacpac vagy közzétett NuGet-csomagból származó objektumokat foglaljanak magukba. Ezek a hivatkozások akkor használatosak, ha az adatbázis-objektumok máshol definiált objektumoktól függnek, például megosztott sémák tábláitól vagy rendszeradatbázis-objektumoktól.

Egy alapszintű adatbázis-hivatkozás egy másik SQL-projektre ugyanabban a megoldásban a következőképpen néz ki:

<ItemGroup>
  <ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>

Az adatbázis-hivatkozások három kapcsolattípust támogatnak:

  • Ugyanaz az adatbázis – A hivatkozott projekt objektumai ugyanahhoz az adatbázismodellhez tartoznak.
  • Eltérő adatbázis, ugyanaz a kiszolgáló – Referenciaobjektumok háromrészes elnevezéssel az adatbázis nevének SQLCMD-változójával.
  • Különböző adatbázis, különböző kiszolgáló – Referenciaobjektumok négyrészes elnevezéssel, SQLCMD-változókkal a kiszolgáló és az adatbázisnevek esetében.

Az adatbázis-hivatkozások konfigurálásával kapcsolatos részletes információkért, beleértve az egyes kapcsolattípusokra vonatkozó példákat, valamint a projektek referenciákkal való létrehozásának és közzétételének útmutatását az Adatbázis-hivatkozások áttekintésében találja.

.NET-projekthivatkozások

A .NET-projektek hivatkozhatnak SQL-projektekre az adatbázis-fejlesztés alkalmazáskóddal való integrálásához. Ez a referenciatípus akkor hasznos, ha a .NET-alkalmazásnak hozzáférésre van szüksége az SQL-projekt buildkimenetéhez (a .dacpac fájlhoz) tesztelés, üzembe helyezés vagy kódgenerálás céljából.

Használati esetek

Az SQL-projektek .NET-projektből való hivatkozásának gyakori forgatókönyvei a következők:

  • Integrációs tesztek – Tesztelje azokat a projekteket, amelyek az adatbázissémát egy teszttárolóban vagy helyi példányon helyezik üzembe a tesztek futtatása előtt.
  • Üzembe helyezés automatizálása – Konzolalkalmazások vagy eszközök, amelyek programozott módon helyezik üzembe a .dacpac célkörnyezetekben.
  • Modellkód létrehozása – Az SQL-projektben definiált adatbázisséma alapján kódot létrehozó alkalmazások.

A projekthivatkozás konfigurálása

Amikor egy .NET-projektből hozzáad egy projekthivatkozást egy SQL-projekthez, tartalmaznia kell az ReferenceOutputAssembly="false" attribútumot. Ez az attribútum azt jelzi a .NET buildelési folyamatának, hogy az SQL-projektet buildfüggőségként kezelje anélkül, hogy .NET-szerelvényként kísérel meg hivatkozni rá.

<ItemGroup>
  <ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>

A ReferenceOutputAssembly="false" beállításra azért van szükség, mert az SQL-projektek elsődleges kimenetként egy fájlt hoznak létre .dacpac , nem .NET-szerelvényt. Ezen attribútum nélkül a .NET buildelési folyamata megpróbálja betölteni a .dacpac szerelvényt, és a következőhöz hasonló hibával meghiúsul:

error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.

A DACPAC elérése a .NET-projektben

A projekthivatkozás konfigurálása után az SQL-projekt a .NET-projekt előtt épül fel. A .dacpac fájl elérhető az SQL-projekt kimeneti könyvtárában (általában bin/Debug vagy bin/Release).

Ha programozott módon szeretné elérni a .dacpac .NET-kódot, hivatkozzon a projektstruktúrához viszonyított fájlútvonalra. Például egy olyan integrációs tesztben, amely a Testcontainers használatával hoz létre egy SQL Server-példányt:

// 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");

A dacpac másolása a kimeneti könyvtárba

A fájl könnyebb elérése érdekében konfigurálja a .NET projektjét úgy, hogy a build során a kimeneti könyvtárba másolja. Adja hozzá a következő konfigurációt a .csproj fájlhoz:

<ItemGroup>
  <None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
        CopyToOutputDirectory="PreserveNewest"
        Link="Database1.dacpac" />
</ItemGroup>

Ez a konfiguráció átmásolja a fájlt a .dacpac .NET-projekt kimeneti könyvtárába, így egyszerűbb útvonalon hivatkozhat rá:

var dacpacPath = Path.Combine(
    AppContext.BaseDirectory,
    "Database1.dacpac");