LINQ to Entities
Introduction
Entity Framework fournit les classes pour exécuter des requêtes et extraire les enregistrements stockés dans la base de données. Les requêtes peuvent être faites en utilisant LINQ to Entities ou Entity SQL.
Pour illustrer ce chapitre, le formulaire MailServerSettings a été modifié pour afficher un contrôle ComboBox contenant les configurations stockées dans la base de données et un bouton pour sauvegarder les modifications :
Extraire les données
Les requêtes sont définies avec des objets de type DbSet<T> et doivent être exécutées au sein du contexte des entités initialisé dans la classe Program.cs :
var builder = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddDbContext<SelfMailerContext>(options =>
{
options.UseSqlServer("Server=localhost\\SQLEXPRESS;
Database=SelfMailer;Trusted_Connection=True;");
});
});
var host = builder.Build();
Le contexte peut ainsi être récupéré et injecté dans l’application :
using (var serviceScope = host.Services.CreateScope())
{
var services = serviceScope.ServiceProvider;
Context = services.GetRequiredService<SelfMailerContext>();
}
Pour des raisons de simplicité, la variable Context statique a été ajoutée à la classe Program pour être disponible globalement.
public static SelfMailerContext Context { get; set; }
1. L’extraction simple
Pour remplir le contrôle ComboBox du formulaire avec les configurations stockées dans la base de données...
Ajouter, modifier et supprimer des données
Lire, chercher, filtrer et ordonner les enregistrements de la base de données représente seulement une partie du besoin dans une application. Ajouter, modifier et supprimer des données sont des actions habituelles effectuées sur un jeu de données.
1. Ajouter des données
L’ajout de nouveaux enregistrements se fait en créant une nouvelle entité du type souhaité. Il suffit ensuite de renseigner ses propriétés et de l’ajouter à la collection d’entités du contexte :
MailServer newMailServer = new MailServer();
newMailServer.Host = this.Host.Text;
newMailServer.Username = this.Username.Text;
newMailServer.Password.Value = this.Password.Text;
newMailServer.Password.AllowSave = true;
Program.Context.MailServers.Add(newMailServer);
L’ajout de la nouvelle entité à la collection du contexte peut être effectué avant ou après l’assignation des propriétés.
La nouvelle entité créée peut être liée avec une entité existante suivant les relations. Pour lier l’entité newMailServer précédemment créée avec une entité Sender, il faut l’ajouter à la collection d’entités liées :
Sender newSender...