Terminiamo la realizzazione della nostra applicazione con ASP.NET affrontando i passaggi relativi alla configurazione del provider del database, al salvataggio dei dati e alla configurazione delle route. Alla fine del nostro lavoro avremo creato una Web App ASP.NET Core perfettamente funzionante. La prima parte dello sviluppo del progetto è descritta nel dettaglio nella lezione precedente.
Configurazione del provider del database
Apriamo il file Startup.cs
. Nel metodo ConfigureServices
aggiungiamo il seguente codice per configurare il provider di database. In ASP.NET Core, il provider di database rappresenta l'implementazione specifica del supporto di accesso al database per una base di dati specifica, come per esempio SQL Server, MySQL, PostgreSQL, SQLite o soluzioni simili.
Il provider di database è responsabile della traduzione delle query e delle operazioni eseguite dall'applicazione in istruzioni comprensibili dal database sottostante.
using Microsoft.EntityFrameworkCore;
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
// ...
}
Come riportato nel codice, stiamo utilizzando una classe chiamata YourDbContext
che estende la classe DbContext
di Entity Framework. DbContext
rappresenta il contesto del nostro database e definisce le entità e le relazioni, nonché le operazioni di accesso al database.
Utilizzando Entity Framework in ASP.NET Core, è necessario creare una classe ereditata da DbContext
specifica per il nostro database. Abbiamo scelto di chiamarla YourDbContext
ma possiamo sostituire questo nome con quello che desideriamo.
Durante la configurazione dei servizi del database, utilizziamo il metodo AddDbContext
per registrare il nostro contesto del database nel servizio di injection delle dipendenze di ASP.NET Core. Ciò ci consente di accedere al contesto del database tramite l'iniezione delle dipendenze.
All'interno del metodo AddDbContext
, infine, abbiamo utilizzato il metodo UseSqlServer
per configurare il provider di database per SQL Server. UseSqlServer
accetta la stringa di connessione al nostro database, che è stata recuperata dal file di configurazione appsettings.json
tramite la chiamata a Configuration.GetConnectionString("DefaultConnection")
.
Il salvataggio dei dati
Ora ritorniamo al controller in cui abbiamo creato il metodo SaveData
. Aggiungiamo la dipendenza al contesto del database utilizzando l'annotazione [FromServices]
sopra il parametro del costruttore.
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
public class DataController : Controller
{
private readonly YourDbContext _dbContext;
public DataController([FromServices] YourDbContext dbContext)
{
_dbContext = dbContext;
}
// ...
[HttpPost]
public IActionResult SaveData(string name, string email)
{
// Salva i dati nel database utilizzando il contesto del database
var entity = new YourEntity { Name = name, Email = email };
_dbContext.YourEntities.Add(entity);
_dbContext.SaveChanges();
return RedirectToAction("FormData");
}
}
Con questi passaggi abbiamo configurato correttamente il database e riusciremo a salvare i dati utilizzando l'Entity Framework di ASP.NET Core.
La configurazione delle route
Apriamo il file Startup.cs
e andiamo al metodo Configure
. Andiamo ad aggiungere il seguente codice al suo interno:
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Welcome}/{id?}");
});
Nel codice fornito in precedenza stiamo mappando la rotta predefinita chiamata default
. Questa rotta corrisponde a una struttura di URL che segue il pattern {controller=Home}/{action=Welcome}/{id?}
.
{controller=Home}
specifica che il nome del controller predefinito èHome
. Questo significa che quando viene richiamato un URL senza specificare un controller, l'applicazione utilizzerà il controller HomeController per gestire la richiesta.{action=Welcome}
specifica che l'azione predefinita all'interno del controllerHome
èWelcome
. Quando viene richiamato un URL senza specificare un'azione, l'applicazione utilizzerà l'azioneWelcome
all'interno del controller per gestire la richiesta.{id?}
indica che l'ID è un parametro opzionale nella rotta. Ciò significa che l'URL può includere un parametro opzionale denominatoid
.
In sostanza, il codice configura il routing in modo che le richieste HTTP vengano indirizzate al controller HomeController
e all'azione Welcome
come azione predefinita, consentendo di gestire le richieste verso la pagina di benvenuto della nostra applicazione.
Conclusioni: lanciare l'applicazione
A questo punto non ci rimane che premere il tasto F5 o selezionare "Avvia debugging" per eseguire l'applicazione. Quest'ultima si aprirà nel browser Web predefinito e mostrerà la pagina di benvenuto. Navigando a partire dall'URL /Data/FormData
, visualizzeremo la pagina con il form che, compilandolo, ci permetterà di inviare i dati al nostro controller e infine al nostro database.