Udostępnij przez


Omówienie referencji do projektu

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Odwołania do projektu w projektach bazy danych SQL umożliwiają tworzenie zależności między projektem SQL a innymi projektami. Istnieją dwa podstawowe typy odwołań do projektu:

  • Odwołania do bazy danych — zależności między projektami SQL lub odwołaniami do .dacpac plików i pakietów NuGet, które zapewniają definicje obiektów bazy danych.
  • Odwołania do projektów platformy .NET — odwołania z projektów .NET do projektów SQL dla scenariuszy, takich jak testowanie integracji, automatyzacja wdrażania i generowanie kodu.

Kiedy rozumiesz, kiedy i jak używać poszczególnych typów odwołań, możesz efektywnie utworzyć strukturę przepływu pracy tworzenia bazy danych.

Odwołania do bazy danych

Odwołania do bazy danych umożliwiają projektowi SQL dołączanie obiektów z innego projektu SQL, .dacpac pliku lub opublikowanego pakietu NuGet. Odwołania te są używane, gdy obiekty bazy danych zależą od obiektów zdefiniowanych gdzie indziej, takich jak tabele w udostępnionym schemacie lub obiektach systemowej bazy danych.

Podstawowe odwołanie bazy danych do innego projektu SQL w tym samym rozwiązaniu wygląda następująco:

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

Odwołania do bazy danych obsługują trzy typy relacji:

  • Ta sama baza danych — obiekty z przywołynego projektu stają się częścią tego samego modelu bazy danych.
  • Inny serwer, ten sam serwer — odwołania do obiektów używających trzyczęściowego nazewnictwa ze zmienną SQLCMD dla nazwy bazy danych.
  • Różne bazy danych, inny serwer — odwołania do obiektów używających czteroczęściowego nazewnictwa ze zmiennymi SQLCMD dla nazw serwerów i baz danych.

Aby uzyskać szczegółowe informacje na temat konfigurowania odwołań do bazy danych, w tym przykłady dla każdego typu relacji i wskazówki dotyczące kompilowania i publikowania projektów z odwołaniami, zobacz Omówienie odwołań do bazy danych.

Odwołania do projektu platformy .NET

Projekty platformy .NET mogą odwoływać się do projektów SQL w celu zintegrowania tworzenia bazy danych z kodem aplikacji. Ten typ odwołania jest przydatny, gdy aplikacja .NET potrzebuje dostępu do danych wyjściowych kompilacji projektu SQL ( .dacpac pliku) na potrzeby testowania, wdrażania lub generowania kodu.

Przypadki użycia

Typowe scenariusze odwoływania się do projektu SQL z projektu platformy .NET obejmują:

  • Testy integracji — testowanie projektów, które wdrażają schemat bazy danych w kontenerze testowym lub wystąpieniu lokalnym przed uruchomieniem testów.
  • Automatyzacja wdrażania — aplikacje konsolowe lub narzędzia, które programowo wdrażają .dacpac w środowiskach docelowych.
  • Generowanie kodu modelu — aplikacje generujące kod na podstawie schematu bazy danych zdefiniowanego w projekcie SQL.

Konfigurowanie odwołania do projektu

Po dodaniu odwołania do projektu .NET do projektu SQL należy dołączyć atrybut ReferenceOutputAssembly="false". Ten atrybut nakazuje procesowi kompilacji platformy .NET traktowanie projektu SQL jako zależności kompilacji bez próby odwołania się do niego jako zestawu platformy .NET.

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

To ReferenceOutputAssembly="false" ustawienie jest wymagane, ponieważ projekty SQL tworzą .dacpac plik jako podstawowe dane wyjściowe, a nie zestaw .NET. Bez tego atrybutu proces kompilacji platformy .NET próbuje załadować .dacpac element jako zestaw i kończy się niepowodzeniem z błędem podobnym do następującego:

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

Uzyskiwanie dostępu do pakietu DACPAC w projekcie platformy .NET

Po skonfigurowaniu odwołania do projektu najpierw budowany jest projekt SQL, a następnie projekt .NET. Plik .dacpac jest dostępny w katalogu wyjściowym projektu SQL (zazwyczaj bin/Debug lub bin/Release).

Aby uzyskać programowo dostęp do .dacpac w kodzie .NET, należy odwołać się do ścieżki pliku względem struktury projektu. Na przykład w teście integracji, który używa narzędzia Testcontainers do utworzenia wystąpienia programu SQL Server:

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

Kopiowanie pliku dacpac do katalogu wyjściowego

Aby ułatwić dostęp do .dacpac pliku, skonfiguruj projekt .NET, aby skopiować go do katalogu wyjściowego podczas kompilacji. Dodaj następującą konfigurację do .csproj pliku:

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

Ta konfiguracja kopiuje .dacpac plik do katalogu wyjściowego projektu .NET, aby można było do niego odwoływać się przy użyciu prostszej ścieżki:

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