Udostępnij za pośrednictwem


.NET .NET Aspire integracja z projektami baz danych SQL w zakresie hostingu

obejmuje:integracja hostingu nie Client integracja

Notatka

Ta integracja jest częścią Community Toolkit i nie jest oficjalnie obsługiwana przez zespół .

W tym artykule dowiesz się, jak wykorzystać integrację hostowania projektów SQL Database .NET Aspire do opublikowania schematu swojej bazy danych w bazie danych SQL Server.

Warunki wstępne

Ta integracja wymaga projektu usługi SQL Database opartego na MSBuild.Sdk.SqlProj lub Microsoft.Build.Sql.

Integracja hostingu

Aby rozpocząć pracę z integracją hostowania projektów SQL Database .NET.NET Aspire, zainstaluj pakiet NuGet 📦 CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects w projekcie hosta aplikacji.

dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzaj zależnościami pakietów w aplikacjach .NET.

Przykładowe użycie

Dodaj odwołanie do projektu 📦 MSBuild.Sdk.SqlProj lub projektu 📦 Microsoft.Build.Sql, który chcesz opublikować w projekcie hosta aplikacji .NET.NET Aspire.

dotnet add reference ../MySqlProj/MySqlProj.csproj

Notatka

Dodanie tego odwołania spowoduje obecnie wyświetlenie ostrzeżenia ASPIRE004 w projekcie ze względu na sposób analizowania odwołań. Zespół .NET.NET Aspire zdaje sobie z tego sprawę i pracujemy nad czystszym rozwiązaniem.

Dodaj projekt jako zasób do .NET.NET Aspire AppHost:

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject<Projects.MySqlProj>("mysqlproj")
       .WithReference(sql);

Teraz po uruchomieniu projektu hosta aplikacji .NET Aspire, projekt bazy danych SQL zostanie opublikowany w określonym SQL Server.

Obsługa pakietów NuGet

Począwszy od wersji 9.2.0, można wdrażać bazy danych z odwołanych pakietów NuGet, takich jak te utworzone przez 📦 MSBuild.Sdk.SqlProj lub 📦 Microsoft.Build.Sql. Aby wdrożyć, dodaj pakiet NuGet do projektu hosta aplikacji Aspire, na przykład:

dotnet add package ErikEJ.Dacpac.Chinook

Następnie zmodyfikuj plik projektu, aby ustawić flagę IsAspirePackageResource na True dla odpowiedniego PackageReference, jak pokazano w poniższym przykładzie.

<PackageReference Include="ErikEJ.Dacpac.Chinook" Version="1.0.0"
                  IsAspirePackageResource="True" />

Na koniec dodaj pakiet jako zasób do modelu aplikacji:

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlPackage<Packages.ErikEJ_Dacpac_Chinook>("chinook")
       .WithReference(sql);

Notatka

Domyślnie .dacpac ma znajdować się pod tools/<package-id>.dacpac. W poprzednim przykładzie oczekuje się ścieżki tools/ErikEJ.Dacpac.Chinook.dacpac. Jeśli z jakiegokolwiek powodu .dacpac znajduje się pod inną ścieżką w pakiecie, możesz użyć API WithDacpac("relative/path/to/some.dacpac"), aby określić ścieżkę względem katalogu głównego projektu hosta aplikacji.

Obsługa lokalnego pliku dacpac

Jeśli pozyskujesz plik .dacpac z innego źródła niż referencja projektu, można również wskazać ścieżkę do pliku .dacpac bezpośrednio.

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject("mysqlproj")
       .WithDacpac("path/to/mysqlproj.dacpac")
       .WithReference(sql);

Obsługa opcji wdrażania

Aby zdefiniować opcje wpływające na zachowanie wdrożenia pakietu, wywołaj interfejs API WithConfigureDacDeployOptions:

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject("mysqlproj")
       .WithConfigureDacDeployOptions(options => options.IncludeCompositeObjects = true)
       .WithReference(sql);

builder.Build().Run();

Powyższy kod:

  • Dodaje do niego zasób serwera SQL o nazwie sql i dodaje do niego zasób bazy danych test.
  • Dodaje zasób projektu SQL o nazwie mysqlproj, a następnie konfiguruje DacDeployOptions.
  • Zasób projektu SQL zależy od zasobu bazy danych.

Przydzielenie wsparcia na nowo

Jeśli wprowadzisz zmiany w projekcie usługi SQL Database podczas uruchamiania hosta aplikacji, możesz użyć akcji niestandardowej Redeploy na pulpicie nawigacyjnym .NET.NET Aspire, aby ponownie wdrożyć aktualizacje bez konieczności ponownego uruchamiania hosta aplikacji.

Zobacz też