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 ASP.NET Core legge la ConnectionString
chiave. Per lo sviluppo locale, ottiene la stringa di connessione dal file appsettings.json
:
"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 di programmi. 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
) > Visualizzazione Designer
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 restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere l'inizializzatore del seme
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 predefiniti.
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 nel contenitore di Dependency Injection nel file Program.cs
.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Il sistema di Configurazione di ASP.NET Core legge la chiave ConnectionString
. Per lo sviluppo locale, ottiene la stringa di connessione dal file appsettings.json
.
"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
LocalDB:
- 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
) > Visualizza Progettista
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
Riempire il database con dati iniziali
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 restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere un seed initializer
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'applicazione, chiamando il codice nel file Program.cs
, in modo che venga eseguito il metodo di seeding. 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 di ASP.NET Core legge laConnectionString
chiave. Per lo sviluppo locale, ottiene la stringa di connessione dal file appsettings.json
.
"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 di programmi. 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
) > Visualizza progettazione
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 restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
<a name=snippet_"si">
Aggiungere l'inizializzatore del seed
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 file Program.cs
, in modo che venga eseguito il metodo seed. 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 predefiniti.
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 file Program.cs
.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Il sistema di Configuration di ASP.NET Core legge la chiave ConnectionString
. Per lo sviluppo locale, ottiene la stringa di connessione dal file appsettings.json
.
"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
LocalDB:
- 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 restituisce e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere l'inizializzatore del seme
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. Forza l'inizializzazione dell'applicazione, chiamando il codice nel file Program.cs
, in modo che venga eseguito il metodo seed. 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 pre-caricati.
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 di ASP.NET Core legge laConnectionString
chiave. Per lo sviluppo locale, ottiene la stringa di connessione dal file appsettings.json
.
"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 di programmi. 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 sulla tabella > Visualizzatore Designer delle 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 termina e non vengono aggiunti film.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Aggiungere l'inizializzatore del seed
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 predefiniti.