Parte 5, usare un database in un'app MVC core ASP.NET
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere i criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Di Rick Anderson e Jon P Smith.
L'oggetto MvcMovieContext
gestisce l'attività di connessione al database e di mapping degli oggetti Movie
ai record di database. Il contesto del database viene registrato con il contenitore Dependency Injection nel Program.cs
file:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
Il sistema di configurazione principale ASP.NET legge la ConnectionString
chiave. Per lo sviluppo locale, ottiene il stringa di connessione dal appsettings.json
file :
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Avviso
Questo articolo usa un database locale che non richiede l'autenticazione dell'utente. Le app di produzione devono usare il flusso di autenticazione più sicuro disponibile. Per altre informazioni sull'autenticazione per le app di test e produzione distribuite, vedere Proteggere i flussi di autenticazione.
SQL Server Express LocalDB
Local DB:
- Versione leggera del motore di database SQL Server Express, installata per impostazione predefinita con Visual Studio.
- Inizia su richiesta usando un stringa di connessione.
- È destinato allo sviluppo del programma. Viene eseguito in modalità utente, quindi non esiste una configurazione complessa.
- Per impostazione predefinita, crea .mdf file nella directory C:/Users/{user}.
Esaminare il database
Dal menu Visualizzazione aprire Esplora oggetti di SQL Server (SSOX).
Fare clic con il pulsante destro del mouse sulla Movie
tabella (dbo.Movie
) > Progettazione viste
Si noti l'icona a forma di chiave accanto a ID
. Per impostazione predefinita, EF crea una proprietà denominata ID
chiave primaria.
Fare clic con il pulsante destro del mouse sulla Movie
tabella > Visualizza dati
Specificare il valore di inizializzazione del database
Creare una nuova classe denominata SeedData
nella cartella Models. Sostituire il codice generato con il seguente:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Se nel database sono presenti film, l'inizializzatore di inizializzazione di inizializzazione restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere l'inizializzatore del valore di inizializzazione
Sostituire il contenuto di Program.cs
con il codice seguente. Il nuovo codice è evidenziato.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapStaticAssets();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Eliminare tutti i record nel database. È possibile eseguire questa operazione con i collegamenti di eliminazione nel browser o da SSOX.
Test dell'app. Forzare l'inizializzazione dell'app, chiamando il codice nel Program.cs
file, in modo che venga eseguito il metodo di inizializzazione. Per forzare l'inizializzazione, chiudere la finestra del prompt dei comandi aperta da Visual Studio e riavviare premendo CTRL+F5.
L'app mostra i dati inizializzati.
L'oggetto MvcMovieContext
gestisce l'attività di connessione al database e di mapping degli oggetti Movie
ai record di database. Il contesto del database viene registrato con il contenitore Dependency Injection nel Program.cs
file:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Il sistema di configurazione principale ASP.NET legge la ConnectionString
chiave. Per lo sviluppo locale, ottiene il stringa di connessione dal appsettings.json
file :
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Avviso
Questo articolo usa un database locale che non richiede l'autenticazione dell'utente. Le app di produzione devono usare il flusso di autenticazione più sicuro disponibile. Per altre informazioni sull'autenticazione per le app di test e produzione distribuite, vedere Proteggere i flussi di autenticazione.
SQL Server Express LocalDB
Local DB:
- Versione leggera del motore di database SQL Server Express, installata per impostazione predefinita con Visual Studio.
- Inizia su richiesta usando un stringa di connessione.
- È destinato allo sviluppo del programma. Viene eseguito in modalità utente, quindi non esiste una configurazione complessa.
- Per impostazione predefinita, crea .mdf file nella directory C:/Users/{user}.
Esaminare il database
Dal menu Visualizzazione aprire Esplora oggetti di SQL Server (SSOX).
Fare clic con il pulsante destro del mouse sulla Movie
tabella (dbo.Movie
) > Progettazione viste
Si noti l'icona a forma di chiave accanto a ID
. Per impostazione predefinita, EF crea una proprietà denominata ID
chiave primaria.
Fare clic con il pulsante destro del mouse sulla Movie
tabella > Visualizza dati
Specificare il valore di inizializzazione del database
Creare una nuova classe denominata SeedData
nella cartella Models. Sostituire il codice generato con il seguente:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Se nel database sono presenti film, l'inizializzatore di inizializzazione di inizializzazione restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere l'inizializzatore del valore di inizializzazione
Sostituire il contenuto di Program.cs
con il codice seguente. Il nuovo codice è evidenziato.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Eliminare tutti i record nel database. È possibile eseguire questa operazione con i collegamenti di eliminazione nel browser o da SSOX.
Test dell'app. Forzare l'inizializzazione dell'app, chiamando il codice nel Program.cs
file, in modo che venga eseguito il metodo di inizializzazione. Per forzare l'inizializzazione, chiudere la finestra del prompt dei comandi aperta da Visual Studio e riavviare premendo CTRL+F5.
L'app mostra i dati inizializzati.
L'oggetto MvcMovieContext
gestisce l'attività di connessione al database e di mapping degli oggetti Movie
ai record di database. Il contesto del database viene registrato con il contenitore Dependency Injection nel Program.cs
file:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Il sistema di configurazione principale ASP.NET legge la ConnectionString
chiave. Per lo sviluppo locale, ottiene il stringa di connessione dal appsettings.json
file :
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Avviso
Questo articolo usa un database locale che non richiede l'autenticazione dell'utente. Le app di produzione devono usare il flusso di autenticazione più sicuro disponibile. Per altre informazioni sull'autenticazione per le app di test e produzione distribuite, vedere Proteggere i flussi di autenticazione.
SQL Server Express LocalDB
Local DB:
- Versione leggera del motore di database SQL Server Express, installata per impostazione predefinita con Visual Studio.
- Inizia su richiesta usando un stringa di connessione.
- È destinato allo sviluppo del programma. Viene eseguito in modalità utente, quindi non esiste una configurazione complessa.
- Per impostazione predefinita, crea .mdf file nella directory C:/Users/{user}.
Esaminare il database
Dal menu Visualizzazione aprire Esplora oggetti di SQL Server (SSOX).
Fare clic con il pulsante destro del mouse sulla Movie
tabella (dbo.Movie
) > Progettazione viste
Si noti l'icona a forma di chiave accanto a ID
. Per impostazione predefinita, EF crea una proprietà denominata ID
chiave primaria.
Fare clic con il pulsante destro del mouse sulla Movie
tabella > Visualizza dati
Specificare il valore di inizializzazione del database
Creare una nuova classe denominata SeedData
nella cartella Models. Sostituire il codice generato con il seguente:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models;
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
Se nel database sono presenti film, l'inizializzatore di inizializzazione di inizializzazione restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
<a name=snippet_"si">
Aggiungere l'inizializzatore del valore di inizializzazione
Sostituire il contenuto di Program.cs
con il codice seguente. Il nuovo codice è evidenziato.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Eliminare tutti i record nel database. È possibile eseguire questa operazione con i collegamenti di eliminazione nel browser o da SSOX.
Test dell'app. Forzare l'inizializzazione dell'app, chiamando il codice nel Program.cs
file, in modo che venga eseguito il metodo di inizializzazione. Per forzare l'inizializzazione, chiudere la finestra del prompt dei comandi aperta da Visual Studio e riavviare premendo CTRL+F5.
L'app mostra i dati inizializzati.
L'oggetto MvcMovieContext
gestisce l'attività di connessione al database e di mapping degli oggetti Movie
ai record di database. Il contesto del database viene registrato con il contenitore Dependency Injection nel Program.cs
file:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Il sistema di configurazione principale ASP.NET legge la ConnectionString
chiave. Per lo sviluppo locale, ottiene il stringa di connessione dal appsettings.json
file :
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-7dc5;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Avviso
Questo articolo usa un database locale che non richiede l'autenticazione dell'utente. Le app di produzione devono usare il flusso di autenticazione più sicuro disponibile. Per altre informazioni sull'autenticazione per le app di test e produzione distribuite, vedere Proteggere i flussi di autenticazione.
SQL Server Express LocalDB
Local DB:
- Versione leggera del motore di database SQL Server Express, installata per impostazione predefinita con Visual Studio.
- Inizia su richiesta usando un stringa di connessione.
- È destinato allo sviluppo del programma. Viene eseguito in modalità utente, quindi non esiste una configurazione complessa.
- Per impostazione predefinita, crea .mdf file nella directory C:/Users/{user}.
Specificare il valore di inizializzazione del database
Creare una nuova classe denominata SeedData
nella cartella Models. Sostituire il codice generato con il seguente:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models
{
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
}
Se nel database sono presenti film, l'inizializzatore di inizializzazione di inizializzazione restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere l'inizializzatore del valore di inizializzazione
Sostituire il contenuto di Program.cs
con il codice seguente. Il nuovo codice è evidenziato.
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using MvcMovie.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Eliminare tutti i record nel database. È possibile eseguire questa operazione con i collegamenti di eliminazione nel browser o da SSOX.
Test dell'app. Forzare l'inizializzazione dell'app, chiamando il codice nel Program.cs
file, in modo che venga eseguito il metodo di inizializzazione. Per forzare l'inizializzazione, chiudere la finestra del prompt dei comandi aperta da Visual Studio e riavviare premendo CTRL+F5.
L'app mostra i dati inizializzati.
L'oggetto MvcMovieContext
gestisce l'attività di connessione al database e di mapping degli oggetti Movie
ai record di database. Il contesto del database viene registrato con il contenitore Dependency Injection nel ConfigureServices
metodo nel Startup.cs
file :
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}
Il sistema di configurazione principale ASP.NET legge la ConnectionString
chiave. Per lo sviluppo locale, ottiene il stringa di connessione dal appsettings.json
file :
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Avviso
Questo articolo usa un database locale che non richiede l'autenticazione dell'utente. Le app di produzione devono usare il flusso di autenticazione più sicuro disponibile. Per altre informazioni sull'autenticazione per le app di test e produzione distribuite, vedere Proteggere i flussi di autenticazione.
SQL Server Express LocalDB
Local DB:
- Versione leggera del motore di database SQL Server Express, installata per impostazione predefinita con Visual Studio.
- Inizia su richiesta usando un stringa di connessione.
- È destinato allo sviluppo del programma. Viene eseguito in modalità utente, quindi non esiste una configurazione complessa.
- Per impostazione predefinita, crea .mdf file nella directory C:/Users/{user}.
Esaminare il database
Dal menu Visualizzazione aprire Esplora oggetti di SQL Server (SSOX).
Fare clic con il pulsante destro del Movie
mouse su Progettazione viste tabella >
Si noti l'icona a forma di chiave accanto a ID
. Per impostazione predefinita, EF crea una proprietà denominata ID
chiave primaria.
Fare clic con il pulsante destro del mouse sulla Movie
tabella > Visualizza dati
Specificare il valore di inizializzazione del database
Creare una nuova classe denominata SeedData
nella cartella Models. Sostituire il codice generato con il seguente:
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using MvcMovie.Data;
using System;
using System.Linq;
namespace MvcMovie.Models
{
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<MvcMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}
}
}
Se nel database sono presenti film, l'inizializzatore di inizializzazione di inizializzazione restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere l'inizializzatore del valore di inizializzazione
Sostituire il contenuto di Program.cs
con il codice seguente:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MvcMovie.Data;
using MvcMovie.Models;
using System;
namespace MvcMovie
{
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
SeedData.Initialize(services);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Test dell'app.
Eliminare tutti i record nel database. È possibile eseguire questa operazione con i collegamenti di eliminazione nel browser o da SSOX.
Forzare l'inizializzazione dell'app, chiamando i metodi nella Startup
classe , in modo che venga eseguito il metodo di inizializzazione. Per forzare l'inizializzazione, IIS Express deve essere arrestato e riavviato. È possibile eseguire questa operazione adottando uno degli approcci seguenti:
Fare clic con il pulsante destro del mouse sull'icona dell'area di notifica di IIS Express e toccare Esci o Arresta sito:
- Se Visual Studio è in esecuzione in modalità non di debug, premere F5 per attivare la modalità di debug
- Se Visual Studio è in esecuzione in modalità di debug, arrestare il debugger e premere F5
L'app mostra i dati inizializzati.