0% ont trouvé ce document utile (0 vote)
6 vues32 pages

Entity Framework Core

Le document traite des différentes méthodes de chargement des données dans Entity Framework Core, notamment le chargement anticipé, explicite et paresseux. Chaque méthode a ses propres avantages et inconvénients en termes de contrôle et d'efficacité des requêtes SQL. Un tableau récapitulatif présente les caractéristiques principales de chaque type de chargement.

Transféré par

eya kassous
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues32 pages

Entity Framework Core

Le document traite des différentes méthodes de chargement des données dans Entity Framework Core, notamment le chargement anticipé, explicite et paresseux. Chaque méthode a ses propres avantages et inconvénients en termes de contrôle et d'efficacité des requêtes SQL. Un tableau récapitulatif présente les caractéristiques principales de chaque type de chargement.

Transféré par

eya kassous
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Entity Framework Core

Remarque:
ToString
parent

enfant

Surcharge methode normale


parent

enfant
OnConfig :methode de liaison avec base de donnee:

Lazy Loading
(les cles etrangeres lkol nzidouhom virtual)
avant:

apres:

mouhawla 2:
valeur positive:
types détenus (Owned Types)
🔍 13. Chargement des données

Le chargement des données en Entity Framework Core concerne la


façon dont les relations entre entités sont récupérées depuis la
base de données. Imaginons que tu as une classe Student qui a
une relation avec Classroom.

1️⃣ Eager Loading (Chargement anticipé)


●​ Principe : On charge tout d’un coup, l’entité principale et ses
relations.​

●​ Comment ? Avec .Include() dans la requête.​

●​ Avantages : Pas de surprises, tout est déjà là.​

●​ Inconvénients : Peut être lourd si tu charges beaucoup de


relations inutiles.​

Exemple :

var students = [Link]


.Include(s => [Link]) //
on inclut la relation Classroom
.ToList();

●​ Ici, chaque Student aura son Classroom chargé


immédiatement.​

●​ SQL généré : SELECT * FROM Students INNER JOIN


Classrooms ...​

2️⃣ Explicit Loading (Chargement explicite)

●​ Principe : On charge la relation seulement quand on en a


besoin, manuellement.​

●​ Comment ? Avec
[Link](...).Reference(...).Load() ou
Collection(...).Load().​
●​ Avantages : Plus de contrôle, tu choisis quand charger.​

●​ Inconvénients : Plus de code, plusieurs requêtes possibles.​

Exemple :

var student = [Link](1); // on


récupère juste le student
[Link](student)
.Reference(s => [Link]) // on cible la
relation
.Load(); // on charge la
relation explicitement

●​ SQL généré : deux requêtes séparées : une pour le Student,


une pour le Classroom.​

3️⃣ Lazy Loading (Chargement paresseux)

●​ Principe : La relation est chargée automatiquement


uniquement quand tu y accèdes.​

●​ Comment ?​

1.​ Installer et activer les proxies :


.UseLazyLoadingProxies()​

2.​ Déclarer les propriétés de navigation comme virtual​

Exemple :

public class Student


{
public int Id { get; set; }
public string Name { get; set; }

public virtual Classroom Classroom { get; set; }


// virtual = lazy
}

var student = [Link](1);


var classroom = [Link]; // ici EF Core
charge automatiquement la relation

●​ SQL généré : une requête supplémentaire est lancée


seulement au moment où on accède à Classroom.​

💡 Résumé simple :

Type de Quand la relation est Requêtes Avantage


Loading chargée SQL principal

Eager Tout de suite 1 (join) Tout est prêt

Explicit Quand tu décides Plusieurs Contrôle total

Lazy Quand tu accèdes Automatiq Simple et


ue pratique

Vous aimerez peut-être aussi