CamusDB.Aspire.Client
0.16.0
dotnet add package CamusDB.Aspire.Client --version 0.16.0
NuGet\Install-Package CamusDB.Aspire.Client -Version 0.16.0
<PackageReference Include="CamusDB.Aspire.Client" Version="0.16.0" />
<PackageVersion Include="CamusDB.Aspire.Client" Version="0.16.0" />
<PackageReference Include="CamusDB.Aspire.Client" />
paket add CamusDB.Aspire.Client --version 0.16.0
#r "nuget: CamusDB.Aspire.Client, 0.16.0"
#:package CamusDB.Aspire.Client@0.16.0
#addin nuget:?package=CamusDB.Aspire.Client&version=0.16.0
#tool nuget:?package=CamusDB.Aspire.Client&version=0.16.0
CamusDB.Aspire.Client
The Aspire client integration for CamusDB. It registers the
CamusDB.Client ADO.NET provider in dependency injection, and it adds a health check, tracing and
metrics.
Install
dotnet add package CamusDB.Aspire.Client
Usage
In Program.cs of the project that references the database resource:
builder.AddCamusDBClient("appdb");
Then get a CamusConnection from dependency injection:
app.MapGet("/todos", async (CamusConnection connection) =>
{
await connection.OpenAsync();
await using CamusCommand select = connection.CreateCamusCommand("SELECT id, title FROM todos");
await using CamusDataReader reader = await select.ExecuteReaderAsync();
// ...
});
The integration registers these services:
| Service | Lifetime |
|---|---|
CamusConnectionStringBuilder |
Singleton. It holds the endpoint pool, the endpoint health and the access token. |
CamusConnection |
Transient. |
For more than one database, use keyed services:
builder.AddKeyedCamusDBClient("orders");
builder.AddKeyedCamusDBClient("users");
app.MapGet("/", ([FromKeyedServices("orders")] CamusConnection orders) => { /* ... */ });
Configuration
The connection string comes from ConnectionStrings:{connectionName}. Without it, the integration
reads the Aspire:CamusDB:Client section:
{
"Aspire": {
"CamusDB": {
"Client": {
"ConnectionString": "Endpoint=http://localhost:5095;Database=appdb",
"DisableHealthChecks": false,
"DisableTracing": false,
"DisableMetrics": false
}
}
}
}
A keyed client also reads Aspire:CamusDB:Client:{name}, and a value there wins. You can also change
the settings in code:
builder.AddCamusDBClient("appdb", settings => settings.DisableHealthChecks = true);
Health check, tracing and metrics
- The health check (
CamusDB, orCamusDB_{name}for a keyed client) pings the server. - Tracing adds the
CamusDB.Clientactivity source. - Metrics add the
CamusDB.Clientmeter.
Your project still configures the OpenTelemetry exporter, usually in its service defaults.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- CamusDB.Client (>= 0.16.1)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- OpenTelemetry.Extensions.Hosting (>= 1.20.1)
-
net8.0
- CamusDB.Client (>= 0.16.1)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- OpenTelemetry.Extensions.Hosting (>= 1.20.1)
-
net9.0
- CamusDB.Client (>= 0.16.1)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.13)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.13)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.13)
- OpenTelemetry.Extensions.Hosting (>= 1.20.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.