A PostgreSQL® client that integrates with Aspire, including health checks, metrics, logging, and telemetry.
$ dotnet add package Aspire.NpgsqlRegisters NpgsqlDataSource in the DI container for connecting PostgreSQL®* database. Enables corresponding health check, metrics, logging and telemetry.
Install the .NET Aspire PostgreSQL Npgsql library with NuGet:
dotnet add package Aspire.Npgsql
In the AppHost.cs file of your project, call the AddNpgsqlDataSource extension method to register a NpgsqlDataSource for use via the dependency injection container. The method takes a connection name parameter.
builder.AddNpgsqlDataSource("postgresdb");
You can then retrieve the NpgsqlDataSource instance using dependency injection. For example, to retrieve the data source from a Web API controller:
private readonly NpgsqlDataSource _dataSource;
public ProductsController(NpgsqlDataSource dataSource)
{
_dataSource = dataSource;
}
The .NET Aspire PostgreSQL Npgsql component provides multiple options to configure the database connection based on the requirements and conventions of your project.
When using a connection string from the ConnectionStrings configuration section, you can provide the name of the connection string when calling builder.AddNpgsqlDataSource():
builder.AddNpgsqlDataSource("myConnection");
And then the connection string will be retrieved from the ConnectionStrings configuration section:
{
"ConnectionStrings": {
"myConnection": "Host=myserver;Database=test"
}
}
See the for more information on how to format this connection string.
The .NET Aspire PostgreSQL Npgsql component supports Microsoft.Extensions.Configuration. It loads the NpgsqlSettings from configuration by using the Aspire:Npgsql key. Example appsettings.json that configures some of the options:
{
"Aspire": {
"Npgsql": {
"DisableHealthChecks": true,
"DisableTracing": true
}
}
}
Also you can pass the Action<NpgsqlSettings> configureSettings delegate to set up some or all the options inline, for example to disable health checks from code:
builder.AddNpgsqlDataSource("postgresdb", settings => settings.DisableHealthChecks = true);
In your AppHost project, install the Aspire.Hosting.PostgreSQL library with NuGet:
dotnet add package Aspire.Hosting.PostgreSQL
Then, in the AppHost.cs file of AppHost, register a Postgres database and consume the connection using the following methods:
var postgresdb = builder.AddPostgres("pg").AddDatabase("postgresdb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(postgresdb);
The WithReference method configures a connection in the MyService project named postgresdb. In the Program.cs file of MyService, the database connection can be consumed using:
builder.AddNpgsqlDataSource("postgresdb");
*Postgres, PostgreSQL and the Slonik Logo are trademarks or registered trademarks of the PostgreSQL Community Association of Canada, and used with their permission.