Question:
Lors de l'obtention d'entités contenant des données associées, EF Core sera initialement renvoyé aux relations vides avant d'exécuter un chargement explicite.
Scène:
Considérez la classe physique suivante:
La relation est configurée dans la méthode :
public class Mutant { public long Id { get; set; } public long OriginalCodeId { get; set; } public virtual OriginalCode OriginalCode { get; set; } } public class OriginalCode { public long Id { get; set; } public virtual List<Mutant> Mutants { get; set; } }
OnModelCreating
modelBuilder.Entity<Mutant>() .HasOne(m => m.OriginalCode) .WithMany(oc => oc.Mutants) .HasForeignKey(m => m.OriginalCodeId);
dans une requête séparée remplira l'attribut .
<释> Explication: OriginalCode
OriginalCodes
EF Core ne prend pas en charge le chargement de retard par défaut. Les relations ne seront pas chargées avec impatience à moins que la demande claire. Dans la première scène, parce que la relation <景> n'est pas explicitement incluse dans la requête, elle reste nul. OriginalCode
Il existe deux façons de résoudre ce comportement:
<.> 1. Chargement avide: OriginalCode
Utiliser <查> Dans la requête, il contient des données pertinentes:
<.> 2. Utilisez le chargement de retard:
À partir de EF Core 2.1, il prend en charge le chargement de retard. Cependant, cela nécessite <启> activer et utilise des attributs de navigation virtuelle.
<止> Empêcher le remplissage automatique: Include()
var mutants = db.Mutants.Include(m => m.OriginalCode).ToList();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!