Entity Framework Code First Chargement Paresseux
Je vais avoir deux catégories d'objets
public class User
{
public Guid Id { get; set; }
public string Name { get; set; }
//Navigation
public ICollection<Product> Products { get; set; }
}
public class Product
{
public Guid Id { get; set; }
//Navigation
public User User { get; set; }
public Guid User_Id { get; set; }
public string Name { get; set; }
}
Lorsque je charge un utilisateur à l'aide de dataContext, j'obtiens la liste des Produits étant nuls (c'est ok).
Si j'ajoute "virtuel" mot-clé à la liste des Produits,
public virtual ICollection<Product> Products { get; set; }
lorsque je charge l'utilisateur, - je obtenir la liste des Produits ainsi.
Pourquoi est-ce arrivé? Je pensais que "virtuel" mot clé est utilisé pour ne pas charger les entités sauf si vous explicite ce (à l'aide d'un "Include" déclaration)
Je pense que j'ai eu tout faux
- vous pouvez utiliser le contexte.ContextOptions.LazyLoadingEnabled = false; à force de le contexte pas à utiliser LazyLoading
- Avec dbContext il serait contexte.La Configuration.LazyLoadingEnabled = false;
Vous devez vous connecter pour publier un commentaire.
C'est faux
Chargement différé signifie que les entités sera chargé automatiquement lorsque vous accédez d'abord à la collecte ou à la navigation, de la propriété, et qui va se passer de manière transparente, comme s'ils étaient toujours chargé de l'objet parent.
À l'aide de "comprendre" est le chargement à la demande, lorsque vous spécifiez les propriétés que vous souhaitez interroger.
Existence de
virtual
mot-clé est liée uniquement à chargement différé.virtual
mot-clé permet d'entity framework runtime créer des proxies dynamiques pour vos classes d'entités et leurs propriétés, et par qui prennent en charge le chargement paresseux. Sans virtuel, le chargement paresseux ne sera pas pris en charge, et vous obtenez la valeur null sur les propriétés de collection.Fait est que vous pouvez utiliser le bouton "inclure" dans tous les cas, mais sans chargement paresseux c'est la seule façon d'accéder à la collection et les propriétés de navigation.
Je suppose que vous êtes quiring pour une propriété qui est un sujet pour le lazy load, tout en étant en le contexte ef:
Essayez de le laisser: