Archives Wild Code School
C#

Entity Framework - LINQ

Quête 41 sur 46

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:

cs
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);
        }
    }
}

↗
LINQ To Enumerable

Tutoriel sur les méthodes LINQ

geeksforgeeks.org
↗
LINQ To Entities

Ecritures de jointure avec les méthodes LINQ

weblogs.asp.net

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:

cs
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;

↗
Syntaxe des requêtes LINQ

Tutoriel sur les requêtes LINQ

tutorialsteacher.com
↗
Ecrire des requêtes LINQ

Tutoriel sur les requêtes LINQ

entityframeworktutorial.net

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:

  1. Les cougars blancs - Il en reste 3

  2. Les tigres blancs - Il en reste 100

  3. 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é Animal qui représente un animal. L'animal appartient à une et une seule espèce

  • Une entité Species qui représente une espèce d'animal

  • Les méthodes LINQ sont utilisées pour recenser les animaux