Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 10 de cet article.
Avertissement
Cette version de ASP.NET Core n’est plus prise en charge. Pour plus d’informations, consultez la Politique de support .NET et .NET Core. Pour la version actuelle, consultez la version .NET 10 de cet article.
Présentation
Cette partie de la série de tutoriels se concentre sur l’utilisation d’une base de données SQL dans votre application MVC ASP.NET Core.
Vous découvrirez comment :
- Inscrivez et configurez le contexte de base de données Entity Framework Core pour votre application MVC ASP.NET Core.
- Utiliser des chaînes de connexion de base de données pour le développement local.
- Utilisez SQL Server Express LocalDB pour le développement et examinez votre base de données et vos données à l’aide de SQL Server Explorateur d'objets.
- Amorçage de votre base de données avec des exemples de données initiaux.
Prérequis
Ce tutoriel utilise une base de données que vous avez configurée à l’étape précédente : Part 4, ajoutez un modèle à une application MVC ASP.NET Core.
Utilisation du contexte de base de données
L’objet MvcMovieContext gère la tâche de connexion à la base de données et de mappage d’objets Movie à des enregistrements de la base de données. Le contexte de base de données est inscrit auprès du conteneur Injection de dépendances dans le fichier Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
Le système ASP.NET Core Configuration lit la clé ConnectionString. Pour le développement local, il obtient le chaîne de connexion à partir du fichier appsettings.json :
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Avertissement
Cet article utilise une base de données locale qui ne nécessite pas l’authentification des utilisateurs. Les applications de production doivent utiliser le flux d’authentification le plus sécurisé disponible. Pour plus d’informations sur l’authentification pour les applications de test et de production déployées, consultez Flux d’authentification sécurisés.
SQL Server Express LocalDB
Base de données locale :
- Version légère de l’Moteur de base de données Express SQL Server, installée par défaut avec Visual Studio.
- Démarre à la demande à l’aide d'une chaîne de connexion.
- Est destiné au développement de programmes. Elle s’exécute en mode utilisateur, ce qui n’implique aucune configuration complexe.
- Par défaut, crée des fichiers .mdf dans le répertoire C:/Users/{utilisateur}.
Examiner la base de données
Dans le menu View, ouvrez SQL Server Explorateur d'objets (SSOX).
Cliquez avec le bouton droit sur la table Movie (dbo.Movie) > Concepteur de vue
Notez l’icône de clé en regard de ID. Par défaut, EF fait d’une propriété nommée ID la clé primaire.
Cliquez avec le bouton droit sur la table Movie> Afficher les données.
Amorcer la base de données
Créez une classe nommée SeedData dans l’espace de noms Modèles. Remplacez le code généré par ce qui suit :
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();
}
}
}
Si la base de données contient des films, l’initialiseur de valeur initiale retourne une valeur et aucun film n’est ajouté.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Ajouter l'initialiseur de graine
Remplacez le contenu de Program.cs par le code suivant. Le nouveau code est mis en évidence.
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?}")
.WithStaticAssets();
app.Run();
Testez l’application. Forcez l’application à s’initialiser en exécutant le code dans le fichier Program.cs, pour que la méthode seed s’exécute. Pour forcer l’initialisation, fermez la fenêtre d’invite de commandes qui Visual Studio ouverte, puis redémarrez en appuyant sur Ctrl+F5.
L'application affiche les données préremplies.
Et une actualisation de la Movie table affiche les mêmes données.
Remarque
Vous ne pourrez peut-être pas entrer de virgules décimales dans les champs décimaux. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que l’anglais qui utilisent une virgule (« , ») comme décimale et des formats de date autres que l’anglais des États-Unis, vous devez effectuer des étapes pour localiser votre application. Voir ce commentaire GitHub 4076 pour obtenir des instructions sur l’ajout de la virgule décimale.
Présentation
Cette partie de la série de tutoriels se concentre sur l’utilisation d’une base de données SQL dans votre application MVC ASP.NET Core.
Vous découvrirez comment :
- Inscrivez et configurez le contexte de base de données Entity Framework Core pour votre application MVC ASP.NET Core.
- Utiliser des chaînes de connexion de base de données pour le développement local.
- Utilisez SQL Server Express LocalDB pour le développement et examinez votre base de données et vos données à l’aide de SQL Server Explorateur d'objets.
- Amorçage de votre base de données avec des exemples de données initiaux.
Prérequis
Ce tutoriel utilise une base de données que vous avez configurée à l’étape précédente : Part 4, ajoutez un modèle à une application MVC ASP.NET Core.
Utilisation du contexte de base de données
L’objet MvcMovieContext gère la tâche de connexion à la base de données et de mappage d’objets Movie à des enregistrements de la base de données. Le contexte de base de données est inscrit auprès du conteneur Injection de dépendances dans le fichier Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext") ?? throw new InvalidOperationException("Connection string 'MvcMovieContext' not found.")));
Le système ASP.NET Core Configuration lit la clé ConnectionString. Pour le développement local, il obtient le chaîne de connexion à partir du fichier appsettings.json :
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-4ebefa10-de29-4dea-b2ad-8a8dc6bcf374;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Avertissement
Cet article utilise une base de données locale qui ne nécessite pas l’authentification des utilisateurs. Les applications de production doivent utiliser le flux d’authentification le plus sécurisé disponible. Pour plus d’informations sur l’authentification pour les applications de test et de production déployées, consultez Flux d’authentification sécurisés.
SQL Server Express LocalDB
Base de données locale :
- Version légère de l’Moteur de base de données Express SQL Server, installée par défaut avec Visual Studio.
- Démarre à la demande à l’aide d’une chaîne de connexion.
- Est destiné au développement de programmes. Elle s’exécute en mode utilisateur, ce qui n’implique aucune configuration complexe.
- Par défaut, crée des fichiers .mdf dans le répertoire C:/Users/{utilisateur}.
Examiner la base de données
Dans le menu View, ouvrez SQL Server Explorateur d'objets (SSOX).
Cliquez avec le bouton droit sur la table Movie (dbo.Movie) > Concepteur de vue
Notez l’icône de clé en regard de ID. Par défaut, EF fait d’une propriété nommée ID la clé primaire.
Cliquez avec le bouton droit sur la table Movie> Afficher les données.
Amorcer la base de données
Créez une classe nommée SeedData dans l’espace de noms Modèles. Remplacez le code généré par ce qui suit :
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();
}
}
}
Si la base de données contient des films, l’initialiseur de valeur initiale retourne une valeur et aucun film n’est ajouté.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Ajouter l'initialiseur de graine
Remplacez le contenu de Program.cs par le code suivant. Le nouveau code est mis en évidence.
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();
Supprimez tous les enregistrements de la base de données. Pour ce faire, utilisez les liens de suppression disponibles dans le navigateur ou à partir de SSOX.
Testez l’application. Forcez l’application à s’initialiser en exécutant le code dans le fichier Program.cs, pour que la méthode seed s’exécute. Pour forcer l’initialisation, fermez la fenêtre d’invite de commandes qui Visual Studio ouverte, puis redémarrez en appuyant sur Ctrl+F5.
L'application affiche les données préremplies.
application 
Remarque
Vous ne pourrez peut-être pas entrer de virgules décimales dans les champs décimaux. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que l’anglais qui utilisent une virgule (« , ») comme décimale et des formats de date autres que l’anglais des États-Unis, vous devez effectuer des étapes pour localiser votre application. Consultez ce commentaire GitHub 4076 pour obtenir des instructions sur l’ajout d'une virgule décimale.
Présentation
Cette partie de la série de tutoriels se concentre sur l’utilisation d’une base de données SQL dans votre application MVC ASP.NET Core.
Vous découvrirez comment :
- Inscrivez et configurez le contexte de base de données Entity Framework Core pour votre application MVC ASP.NET Core.
- Utiliser des chaînes de connexion de base de données pour le développement local.
- Utilisez SQL Server Express LocalDB pour le développement et examinez votre base de données et vos données à l’aide de SQL Server Explorateur d'objets.
- Amorçage de votre base de données avec des exemples de données initiaux.
Prérequis
Ce tutoriel utilise une base de données que vous avez configurée à l’étape précédente : Part 4, ajoutez un modèle à une application MVC ASP.NET Core.
Utilisation du contexte de base de données
L’objet MvcMovieContext gère la tâche de connexion à la base de données et de mappage d’objets Movie à des enregistrements de la base de données. Le contexte de base de données est inscrit auprès du conteneur Injection de dépendances dans le fichier Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Le système ASP.NET Core Configuration lit la clé ConnectionString. Pour le développement local, il obtient le chaîne de connexion à partir du fichier appsettings.json :
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Avertissement
Cet article utilise une base de données locale qui ne nécessite pas l’authentification des utilisateurs. Les applications de production doivent utiliser le flux d’authentification le plus sécurisé disponible. Pour plus d’informations sur l’authentification pour les applications de test et de production déployées, consultez Flux d’authentification sécurisés.
SQL Server Express LocalDB
Base de données locale :
- Version légère de l’Moteur de base de données Express SQL Server, installée par défaut avec Visual Studio.
- Démarre à la demande à l’aide d’une chaîne de connexion.
- Est destiné au développement de programmes. Elle s’exécute en mode utilisateur, ce qui n’implique aucune configuration complexe.
- Par défaut, crée des fichiers .mdf dans le répertoire C:/Users/{utilisateur}.
Examiner la base de données
Dans le menu View, ouvrez SQL Server Explorateur d'objets (SSOX).
Cliquez avec le bouton droit sur la table Movie (dbo.Movie) > Concepteur de vue
Notez l’icône de clé en regard de ID. Par défaut, EF fait d’une propriété nommée ID la clé primaire.
Cliquez avec le bouton droit sur la table Movie> Afficher les données.
Amorcer la base de données
Créez une classe nommée SeedData dans l’espace de noms Modèles. Remplacez le code généré par ce qui suit :
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();
}
}
}
Si la base de données contient des films, l’initialiseur de valeur initiale retourne une valeur et aucun film n’est ajouté.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Ajouter l'initialiseur de graine
Remplacez le contenu de Program.cs par le code suivant. Le nouveau code est mis en évidence.
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();
Supprimez tous les enregistrements de la base de données. Pour ce faire, utilisez les liens de suppression disponibles dans le navigateur ou à partir de SSOX.
Testez l’application. Forcez l’application à s’initialiser en exécutant le code dans le fichier Program.cs, pour que la méthode seed s’exécute. Pour forcer l’initialisation, fermez la fenêtre d’invite de commandes qui Visual Studio ouverte, puis redémarrez en appuyant sur Ctrl+F5.
L'application affiche les données préremplies.
Remarque
Vous ne pourrez peut-être pas entrer de virgules décimales dans les champs décimaux. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que l’anglais qui utilisent une virgule (« , ») comme décimale et des formats de date autres que l’anglais des États-Unis, vous devez effectuer des étapes pour localiser votre application. Voir le commentaire GitHub 4076 pour obtenir des instructions sur l’ajout de la virgule décimale.
Présentation
Cette partie de la série de tutoriels se concentre sur l’utilisation d’une base de données SQL dans votre application MVC ASP.NET Core.
Vous découvrirez comment :
- Inscrivez et configurez le contexte de base de données Entity Framework Core pour votre application MVC ASP.NET Core.
- Utiliser des chaînes de connexion de base de données pour le développement local.
- Utilisez SQL Server Express LocalDB pour le développement et examinez votre base de données et vos données à l’aide de SQL Server Explorateur d'objets.
- Amorçage de votre base de données avec des exemples de données initiaux.
Prérequis
Ce tutoriel utilise une base de données que vous avez configurée à l’étape précédente : Part 4, ajoutez un modèle à une application MVC ASP.NET Core.
Utilisation du contexte de base de données
L’objet MvcMovieContext gère la tâche de connexion à la base de données et de mappage d’objets Movie à des enregistrements de la base de données. Le contexte de base de données est inscrit auprès du conteneur Injection de dépendances dans le fichier Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Le système ASP.NET Core Configuration lit la clé ConnectionString. Pour le développement local, il obtient le chaîne de connexion à partir du fichier appsettings.json :
"ConnectionStrings": {
"MvcMovieContext": "Data Source=MvcMovieContext-ea7a4069-f366-4742-bd1c-3f753a804ce1.db"
}
Avertissement
Cet article utilise une base de données locale qui ne nécessite pas l’authentification des utilisateurs. Les applications de production doivent utiliser le flux d’authentification le plus sécurisé disponible. Pour plus d’informations sur l’authentification pour les applications de test et de production déployées, consultez Flux d’authentification sécurisés.
SQL Server Express LocalDB
Base de données locale :
- Version légère de l’Moteur de base de données Express SQL Server, installée par défaut avec Visual Studio.
- Démarre à la demande à l’aide d'une chaîne de connexion.
- Est destiné au développement de programmes. Elle s’exécute en mode utilisateur, ce qui n’implique aucune configuration complexe.
- Par défaut, crée des fichiers .mdf dans le répertoire C:/Users/{utilisateur}.
Examiner la base de données
Dans le menu View, ouvrez SQL Server Explorateur d'objets (SSOX).
Cliquez avec le bouton droit sur la table Movie (dbo.Movie) > Concepteur de vue
Notez l’icône de clé en regard de ID. Par défaut, EF fait d’une propriété nommée ID la clé primaire.
Cliquez avec le bouton droit sur la table Movie> Afficher les données.
Amorcer la base de données
Créez une classe nommée SeedData dans l’espace de noms Modèles. Remplacez le code généré par ce qui suit :
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();
}
}
}
Si la base de données contient des films, l’initialiseur de valeur initiale retourne une valeur et aucun film n’est ajouté.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
<a name=snippet_"si »>
Ajouter l'initialiseur de graine
Remplacez le contenu de Program.cs par le code suivant. Le nouveau code est mis en évidence.
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();
Supprimez tous les enregistrements de la base de données. Pour ce faire, utilisez les liens de suppression disponibles dans le navigateur ou à partir de SSOX.
Testez l’application. Forcez l’application à s’initialiser en exécutant le code dans le fichier Program.cs, pour que la méthode seed s’exécute. Pour forcer l’initialisation, fermez la fenêtre d’invite de commandes qui Visual Studio ouverte, puis redémarrez en appuyant sur Ctrl+F5.
L'application affiche les données préremplies.
Remarque
Vous ne pourrez peut-être pas entrer de virgules décimales dans les champs décimaux. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que l’anglais qui utilisent une virgule (« , ») comme décimale et des formats de date autres que l’anglais des États-Unis, vous devez effectuer des étapes pour localiser votre application. Voir ce commentaire GitHub 4076 pour obtenir des instructions sur l’ajout de virgule décimale.
Présentation
Cette partie de la série de tutoriels se concentre sur l’utilisation d’une base de données SQL dans votre application MVC ASP.NET Core.
Vous découvrirez comment :
- Inscrivez et configurez le contexte de base de données Entity Framework Core pour votre application MVC ASP.NET Core.
- Utiliser des chaînes de connexion de base de données pour le développement local.
- Utilisez SQL Server Express LocalDB pour le développement et examinez votre base de données et vos données à l’aide de SQL Server Explorateur d'objets.
- Amorçage de votre base de données avec des exemples de données initiaux.
Prérequis
Ce tutoriel utilise une base de données que vous avez configurée à l’étape précédente : Part 4, ajoutez un modèle à une application MVC ASP.NET Core.
Utilisation du contexte de base de données
L’objet MvcMovieContext gère la tâche de connexion à la base de données et de mappage d’objets Movie à des enregistrements de la base de données. Le contexte de base de données est inscrit auprès du conteneur Injection de dépendances dans le fichier Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MvcMovieContext")));
Le système ASP.NET Core Configuration lit la clé ConnectionString. Pour le développement local, il obtient le chaîne de connexion à partir du fichier appsettings.json :
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-7dc5;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Avertissement
Cet article utilise une base de données locale qui ne nécessite pas l’authentification des utilisateurs. Les applications de production doivent utiliser le flux d’authentification le plus sécurisé disponible. Pour plus d’informations sur l’authentification pour les applications de test et de production déployées, consultez Flux d’authentification sécurisés.
SQL Server Express LocalDB
Base de données locale :
- Version légère de l’Moteur de base de données Express SQL Server, installée par défaut avec Visual Studio.
- Démarre à la demande à l’aide d’une chaîne de connexion.
- Est destiné au développement de programmes. Elle s’exécute en mode utilisateur, ce qui n’implique aucune configuration complexe.
- Par défaut, crée des fichiers .mdf dans le répertoire C:/Users/{utilisateur}.
Amorcer la base de données
Créez une classe nommée SeedData dans l’espace de noms Modèles. Remplacez le code généré par ce qui suit :
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();
}
}
}
}
Si la base de données contient des films, l’initialiseur de valeur initiale retourne une valeur et aucun film n’est ajouté.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Ajouter l'initialiseur de graine
Remplacez le contenu de Program.cs par le code suivant. Le nouveau code est mis en évidence.
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();
Supprimez tous les enregistrements de la base de données. Pour ce faire, utilisez les liens de suppression disponibles dans le navigateur ou à partir de SSOX.
Testez l’application. Forcez l’application à s’initialiser en exécutant le code dans le fichier Program.cs, pour que la méthode seed s’exécute. Pour forcer l’initialisation, fermez la fenêtre d’invite de commandes qui Visual Studio ouverte, puis redémarrez en appuyant sur Ctrl+F5.
L'application affiche les données préremplies.
application 
Remarque
Vous ne pourrez peut-être pas entrer de virgules décimales dans les champs décimaux. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que l’anglais qui utilisent une virgule (« , ») comme décimale et des formats de date autres que l’anglais des États-Unis, vous devez effectuer des étapes pour localiser votre application. Voir ce commentaire GitHub 4076 pour obtenir des instructions sur l'ajout d'une virgule décimale.
Présentation
Cette partie de la série de tutoriels se concentre sur l’utilisation d’une base de données SQL dans votre application MVC ASP.NET Core.
Vous découvrirez comment :
- Inscrivez et configurez le contexte de base de données Entity Framework Core pour votre application MVC ASP.NET Core.
- Utiliser des chaînes de connexion de base de données pour le développement local.
- Utilisez SQL Server Express LocalDB pour le développement et examinez votre base de données et vos données à l’aide de SQL Server Explorateur d'objets.
- Amorçage de votre base de données avec des exemples de données initiaux.
Prérequis
Ce tutoriel utilise une base de données que vous avez configurée à l’étape précédente : Part 4, ajoutez un modèle à une application MVC ASP.NET Core.
Utilisation du contexte de base de données
L’objet MvcMovieContext gère la tâche de connexion à la base de données et de mappage d’objets Movie à des enregistrements de la base de données. Le contexte de base de données est inscrit auprès du conteneur Injection de dépendances dans la méthode ConfigureServices du fichier Startup.cs :
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<MvcMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}
Le système ASP.NET Core Configuration lit la clé ConnectionString. Pour le développement local, il obtient le chaîne de connexion à partir du fichier appsettings.json :
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Avertissement
Cet article utilise une base de données locale qui ne nécessite pas l’authentification des utilisateurs. Les applications de production doivent utiliser le flux d’authentification le plus sécurisé disponible. Pour plus d’informations sur l’authentification pour les applications de test et de production déployées, consultez Flux d’authentification sécurisés.
SQL Server Express LocalDB
Base de données locale :
- Version légère de l’Moteur de base de données Express SQL Server, installée par défaut avec Visual Studio.
- Démarre à la demande à l’aide d’une chaîne de connexion.
- Est destiné au développement de programmes. Elle s’exécute en mode utilisateur, ce qui n’implique aucune configuration complexe.
- Par défaut, crée des fichiers .mdf dans le répertoire C:/Users/{utilisateur}.
Examiner la base de données
Dans le menu View, ouvrez SQL Server Explorateur d'objets (SSOX).
Cliquez avec le bouton droit sur la table Movie> Concepteur de vue
Notez l’icône de clé en regard de ID. Par défaut, EF fait d’une propriété nommée ID la clé primaire.
Cliquez avec le bouton droit sur la table Movie> Afficher les données.
Amorcer la base de données
Créez une classe nommée SeedData dans l’espace de noms Modèles. Remplacez le code généré par ce qui suit :
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();
}
}
}
}
Si la base de données contient des films, l’initialiseur de valeur initiale retourne une valeur et aucun film n’est ajouté.
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Ajouter l'initialiseur de graine
Remplacez le contenu de Program.cs par le code suivant :
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>();
});
}
}
Testez l’application.
Supprimez tous les enregistrements de la base de données. Pour ce faire, utilisez les liens de suppression disponibles dans le navigateur ou à partir de SSOX.
Forcez l’application à s’initialiser en appelant les méthodes de la classe Startup, pour que la méthode seed s’exécute. Pour forcer l’initialisation, IIS Express doit être arrêté et redémarré. Pour cela, adoptez l’une des approches suivantes :
Cliquez avec le bouton droit sur l’icône de barre d’état système IIS Express dans la zone de notification, puis appuyez sur Quitter ou sur Arrêter le site :
- Si vous exécutiez Visual Studio en mode non-débogage, appuyez sur F5 pour l’exécuter en mode débogage.
- Si vous exécutiez Visual Studio en mode débogage, arrêtez le débogueur et appuyez sur F5.
L'application affiche les données préremplies.
application 
Remarque
Vous ne pourrez peut-être pas entrer de virgules décimales dans les champs décimaux. Pour prendre en charge la validation jQuery pour les paramètres régionaux autres que l’anglais qui utilisent une virgule (« , ») comme décimale et des formats de date autres que l’anglais des États-Unis, vous devez effectuer des étapes pour localiser votre application. Voir ce commentaire GitHub 4076 pour obtenir des instructions sur l’ajout de la virgule décimale.