Entity Framework - LINQ
Après cette quête tu sauras comment faire des requêtes avec LINQ
LINQ Method
Plus besoin d'écrire de SQL pour retourner des enregistrements en base de données méthodes !
C'est bien beau ce que tu me dis mais comment je fais un WHERE avec Entity Framework ? Et les jointures ? Et les agrégations ?
Et bien oui, tu peux retourner des jointures et des agrégats venant d'une base de données sans écrire un seul caractère de SQL, et cela grâce à l'utilisation des extensions LINQ.
System.Linq est un espace de noms ajoutant les extension Linq à toutes (ou presque) les collections possibles en C#. Les enregistrements ne font pas exception: ils peuvent être manipulés comme des collections avec Linq.
Exemple:
using Microsoft.EntityFrameworkCore;
using System.Windows.Forms;
using System.Linq;
using System.Data.SqlClient;
using System.Data;
using System;
using System.Collections.Generic;
namespace LINQMethodDemo
{
public class AnimalContext : DbContext
{
public DbSet<Animal> Animals { get; set; }
public DbSet<Species> Species { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
builder.UseSqlServer(/* Your connection string */);
}
}
public class Animal
{
public Guid AnimalId { get; set; }
public String Name { get; set; }
public DateTime DateOfBirth { get; set; }
public Species Species { get; set; }
}
public class Species
{
public Guid SpeciesId { get; set; }
public String Name { get; set; }
}
public class Program
{
public static void Main()
{
using (var context = new AnimalContext())
{
var whiteCougarSpecies = context.Species.Where((s) => s.Name == "White cougar");
IEnumerable<Animal> whiteCougars = context.Animals.Where((a) => a.Species == whiteCougarSpecies);
}
}
}
Tutoriel sur les méthodes LINQ
Ecritures de jointure avec les méthodes LINQ
LINQ Query
Il y a une autre méthode d'utilisation de LINQ: les requêtes LINQ.
Si on reprendre l'exemple de l'étape précédente en réecrivant la méthode LINQ en requête:
var whiteCougarSpecies = from spec in context.Species
where spec.Name == "White cougar"
select spec;
var whiteCougars = from animal in context.Animals
where animal.Species == whiteCougarSpecies
select animal;
Tutoriel sur les requêtes LINQ
Tutoriel sur les requêtes LINQ
La protection de la faune
La diversité de la faune terrienne est en chute libre. Cela est principalement du à nos actes en tant qu'humains mais aussi à cause des lois de l'évolution.
Quoiqu'il en soit, en tant qu'association de protection de la faune, nous désirons pouvoir mettre au point un système permettant de tracer l'évolution des espèces protégées.
Challenge
Tenir compte des espèces protégées
Tu vas faire un programme qui permet de tenir compte des espèces protégées dans le monde.
Il y a trois espèces que nous cherchons à protéger:
-
Les cougars blancs - Il en reste 3
-
Les tigres blancs - Il en reste 100
-
Les tortues albinos - Il en reste 15
Critères de validation
-
Le programme affiche dans la console, par espèce, le nombre d'animaux recensés
-
La base de données est générée grâce à l'approche Code-First de EntityFramework
-
Une entité
Animalqui représente un animal. L'animal appartient à une et une seule espèce -
Une entité
Speciesqui représente une espèce d'animal -
Les méthodes LINQ sont utilisées pour recenser les animaux