Integrare SQL Server in un progetto .NET Aspire

di Morgan Pizzini, in ASP.NET Core,

Nel precedente articolo abbiamo esplorato come .NET Aspire possa orchestrare risorse come Redis per lo sviluppo locale. Estendiamo questa configurazione integrando un database relazionale: SQL Server. In questo modo arriviamo a creare una vera applicazione in grado di persistere i dati.

Come per il caso precedente è necessario installare il pacchetto NuGet Aspire.Hosting.SqlServer nel progetto host, e configurare l'istanza di SQL Server all'interno del Program.cs

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                    // permette di persistere il container nel tempo, velocizzando i tempi di avvio
                 .WithLifetime(ContainerLifetime.Persistent);

var db = sql.AddDatabase("database");

builder.AddProject<MiaSoluzione.ProgettoBackend>()
       .WithReference(db)
       .WaitFor(db);

Se, come è lecito pensare, il server SQL richieda una configurazione, un database o un set di dati, possiamo integrare uno script SQL che verrà lanciato immediatamente dopo la sua creazione.

var db = sql.AddDatabase("database")
            .WithCreationScript("CREATE DATABASE [database]; [...]");

Per quanto riguarda le credenziali, .NET Aspire genera automaticamente credenziali predefinite per l'istanza, utilizzando l'utente sa e una password casuale che vengono archiviate nel secret store dell'app host e possono essere recuperate tramite configurazione.

Ora che il database è operativo, non resterà altro che uniformare l'applicazione Backend rendendo il DbContext disponibile all'interno dei Controller. Il primo passo è sempre installare la libreria NuGet ad-hoc Aspire.Microsoft.EntityFrameworkCore.SqlServer e modificare il file Program.cs

builder.Services.AddDbContext<MioDbContext>((serviceProvider, options) =>
{
    var configuration = serviceProvider.GetRequiredService<IConfiguration>();
    var connectionString = configuration.GetConnectionString("database");
    options.UseSqlServer(connectionString);
});

In conclusione, il monitoraggio della risorsa è gestito autonomamente da .NET Aspire, tramite controlli di integrità (health checks) e il tracciamento delle attività tramite OpenTelemetry, facilitando il monitoraggio delle operazioni del database.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi