Manipulation base de données : Linq

Manipulation d’une base de données avec Linq

Pour manipuler une base de données, nous allons utiliser LINQ to SQL disponible depuis la version 3.5 du Framework .net.

LINQ to SQL, c'est quoi exactement? C'est une implémentation de O/R (Object relational mapping) permettant de modèliser une base de données relationnelle à l'aide de classe .NET.

Modéliser la base de données via Linq

Dans un premier temps, il faut modéliser la base de données dans votre projet. Pour cela, nous allons utiliser le designer LINQ to SQL présent dans Visual Studio.
Dans votre projet, ajouter un nouvel élément de type Classes LINQ to SQL.

LINQ to SQL

Une fois l'élément ajouté, celui-ci va s'ouvrir automatiquement. Il faut ensuite faire la liaison avec la base de données. Pour cela cliquer sur "Explorateur de servers". Dans la fenêtre d'explorateur de servers, ajoutez la connexion à votre base de données. Enfin pour ajouter vos tables à votre DBML, il vous suffit de les faire glisser de l'explorateur de servers à votre DBML.

DBML

Dans notre DBML, nous avons deux tables, une avec les inscrits au jeu concours et l'autre avec les villes. Un inscrit est rattaché à un ville.

Exemple d'utilisation du DBML

Maintenant que nous avons un DBML, voyons comment interroger les données en base.

Effectuer une recherche avec Linq

En repartant de notre DBML JeuConcours, je souhaite récupérer uniquement les inscrits optin au jeu concours. Puis nous les afficherons à l'écran.

JeuConcoursDataContext jdc = new JeuConcoursDataContext();
var inscrits = from i in jdc.Inscrit
where i.Optin == true
select i;

foreach (var inscrit in inscrits)
{
Response.Write(inscrit.Email);
}

 

Il est possible de faire la même chose que l'exemple ci-dessus avec un code plus compact.

jdc.Inscrit.Where(i => i.Optin).ToList().ForEach(i => Response.Write(i.Email));

 

Modifier les données

Voyons maintenant comment modifier les données en base. Nous allons mettre en majuscule le nom des personnes.

JeuConcoursDataContext jdc = new JeuConcoursDataContext();
var inscrits = from i in jdc.Inscrit
select i;

foreach (var inscrit in inscrits)
{
inscrit.Nom = inscrit.Nom.ToUpper();
}
jdc.SubmitChanges();

Insérer des données

Nous allons maintenant insérer un nouvel inscrit en base de données.

Inscrit nouvelInscrit = new Inscrit();
nouvelInscrit.Nom = "houzet";
nouvelInscrit.Prenom = "Sébastien";
nouvelInscrit.Email = "sebastien@demo.fr";
nouvelInscrit.Optin = false;
nouvelInscrit.OptinPartenaire = true;
nouvelInscrit.Ville_IdVille = 1;

jdc.Inscrit.InsertOnSubmit(nouvelInscrit);

jdc.SubmitChanges();

 

Supprimer des données

Il existe de manière d'effectuer une suppression. Si vous n'avez qu'un seul élément à supprimer nous allons utiliser la méthode DeleteOnSubmit() depuis votre objet table en précisant l'entity. Si vous souhaitez supprimer un ensemble d'élément, nous utiliserons la méthode DeleteAllOnSubmit() en précisant une liste IEnumerable d'entitie.

 

// Suppression de tous les inscrits avec optin à false
var inscrits = from i in jdc.Inscrit
where i.Optin == false
select i;

jdc.Inscrit.DeleteAllOnSubmit(inscrits);

// Suppression de la personne avec l'id 1
Inscrit inscrit = jdc.Inscrit.Where(i => i.Id == 1).FirstOrDefault();
jdc.Inscrit.DeleteOnSubmit(inscrit);

jdc.SubmitChanges();

 

A propos de l'auteur

Sébastien Houzet

Sébastien Houzet est un passionné d'internet depuis 1998. Il peut vous accompagner sur les projets Web.