Use community extensions for SQL Server hosting
The Aspire Community Toolkit SQL Server hosting extensions package provides extra functionality to the Aspire.Hosting.SqlServer hosting package.
This package provides the following features:
Hosting integration
Section titled “Hosting integration”To get started with the Aspire Community Toolkit SQL Server hosting extensions, install the CommunityToolkit.Aspire.Hosting.SqlServer.Extensions NuGet package in the AppHost project.
aspire add communitytoolkit-sqlserver-extensionsThe Aspire CLI is interactive, be sure to select the appropriate search result when prompted:
Select an integration to add:
> communitytoolkit-sqlserver-extensions (CommunityToolkit.Aspire.Hosting.SqlServer.Extensions)> Other results listed as selectable options...#:package CommunityToolkit.Aspire.Hosting.SqlServer.Extensions@*<PackageReference Include="CommunityToolkit.Aspire.Hosting.SqlServer.Extensions" Version="*" />For TypeScript AppHosts, add the Community Toolkit SQL Server extensions package to aspire.config.json:
{ "packages": { "CommunityToolkit.Aspire.Hosting.SqlServer.Extensions": "*" }}Add management UI
Section titled “Add management UI”DbGate management UI
Section titled “DbGate management UI”To add the DbGate management UI, decorate the official SqlServerServerResource builder with WithDbGate / withDbGate:
var builder = DistributedApplication.CreateBuilder(args);
var sqlserver = builder.AddSqlServer("sqlserver") .WithDbGate();
builder.AddProject<Projects.ExampleProject>("api") .WithReference(sqlserver);
builder.Build().Run();import { createBuilder } from './.aspire/modules/aspire.mjs';
const builder = await createBuilder();
const sqlserver = await builder.addSqlServer('sqlserver');await sqlserver.withDbGate();
const api = await builder.addProject('api', '../Api/Api.csproj');await api.withReference(sqlserver);
await builder.build().run();This adds a new DbGate resource to the AppHost which is available from the Aspire dashboard. DbGate is a comprehensive database management tool that provides a web-based interface for managing your SQL Server databases.
Adminer management UI
Section titled “Adminer management UI”To add the Adminer management UI, decorate the official SqlServerServerResource builder with WithAdminer / withAdminer:
var builder = DistributedApplication.CreateBuilder(args);
var sqlserver = builder.AddSqlServer("sqlserver") .WithAdminer();
builder.AddProject<Projects.ExampleProject>("api") .WithReference(sqlserver);
builder.Build().Run();import { createBuilder } from './.aspire/modules/aspire.mjs';
const builder = await createBuilder();
const sqlserver = await builder.addSqlServer('sqlserver');await sqlserver.withAdminer();
const api = await builder.addProject('api', '../Api/Api.csproj');await api.withReference(sqlserver);
await builder.build().run();This adds a new Adminer resource to the AppHost which is available from the Aspire dashboard. Adminer is a lightweight database management tool that provides a simple web interface for database operations.
Using both management UIs
Section titled “Using both management UIs”You can use both management UIs together on the same SQL Server resource:
var builder = DistributedApplication.CreateBuilder(args);
var sqlserver = builder.AddSqlServer("sqlserver") .WithDbGate() .WithAdminer();
builder.AddProject<Projects.ExampleProject>("api") .WithReference(sqlserver);
builder.Build().Run();import { createBuilder } from './.aspire/modules/aspire.mjs';
const builder = await createBuilder();
const sqlserver = await builder.addSqlServer('sqlserver');await sqlserver.withDbGate();await sqlserver.withAdminer();
const api = await builder.addProject('api', '../Api/Api.csproj');await api.withReference(sqlserver);
await builder.build().run();dbx management UI
Section titled “dbx management UI”dbx is a lightweight, web-based database client and an alternative management UI to DbGate and Adminer. Use WithDbx / withDbx to add a dbx child resource configured for the SQL Server resource:
var builder = DistributedApplication.CreateBuilder(args);
var sqlserver = builder.AddSqlServer("sqlserver") .WithDbx();
builder.Build().Run();import { createBuilder } from './.aspire/modules/aspire.mjs';
const builder = await createBuilder();
const sqlserver = await builder.addSqlServer('sqlserver');await sqlserver.withDbx({ containerName: 'sqlserver-dbx', imageTag: '0.5.33',});
await builder.build().run();The C# overload accepts an optional container configuration callback and containerName. The TypeScript binding accepts optional containerName and imageTag values.