.NET .NET Aspire integracja z projektami baz danych SQL w zakresie hostingu
obejmuje:integracja hostingu nie Client integracja
Notatka
Ta integracja jest częścią
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 danychtest
. - 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.