Entity Framework Désireux De Charge Pas Les Données De Retour, Lazy Load N'
Je suis en utilisant le premier code EF5 et j'ai un objet qui possède une collection définie comme virtual
(paresseux chargé). Cela renvoie des données lors de l'appel. Cependant, je veux qu'il soit désireux chargé. J'ai supprimé virtual
de l'établissement signature, mais maintenant, il renvoie toujours null
de données. EF n'a même pas d'exécuter la requête, quelqu'un peut-il aider?
Edit: je sais à propos de .include()
j'avais juste préfèrent utiliser la non-propriété virtuelle méthode de le faire.
Objets
User
([Key]
Id est sur l'objet de la Ressource qui est le Parent de la classe personne):
namespace Entities
{
[Table("Users")]
public class User : Person
{
[Required]
public ICollection<Role> Roles { get; set; }
}
}
Rôle:
namespace Entities
{
public class Role
{
[Key]
public string Id { get; set; }
public virtual ICollection<User> Users { get; set; }
}
}
OriginalL'auteur Barry | 2013-09-20
Vous devez vous connecter pour publier un commentaire.
C'est une commune de la confusion. À l'opposé de chargement différé: pas chargement sauf explicitement ne le chargement vous-même (par exemple par désireux de chargement à l'aide de
Include
).Donc, si vous éteignez le chargement paresseux en quelque sorte — retrait de la
virtual
modificateur est l'un d'eux — le comportement ne se transforme pas en désireux de chargement mais pas de chargement.Penser à elle, suppose EF ardemment charge tout ce qui n'est pas marqué pour le chargement paresseux. Vous courez le risque de chargement de la moitié de la base de données en effectuant une requête simple!
Il est aucun moyen pour en faire une propriété de navigation désireux de chargement par défaut (si vous vous voulez toujours que, après avoir lu ci-dessus).
L'astuce sur la façon de retirer le commutateur virtuel au large de la lazy load sauver ma journée ;). Merci!!!
OriginalL'auteur Gert Arnold
Vous aurez besoin d'utiliser la méthode include à la force de la charge de la ICollections au sein de votre entités avec impatient de chargement. Le prédécesseur lien qui pourrait vous aider: http://msdn.microsoft.com/en-us/data/jj574232.aspx
Pour autant que je sais ses pas disponible par défaut. vous aurez besoin d'inclure ces quelque part ou de l'autre. De façons de le faire vérifier ce post stackoverflow.com/questions/14512285/...
voir: msdn.microsoft.com/en-us/data/jj574232.aspx "désactiver le chargement paresseux pour certaines propriétés de navigation"
Toutes mes excuses, grâce à Gurts commentaire, je comprends maintenant (c'était la façon dont elle est écrite sur msdn qui m'ont filé). La méthode d'extension est une très bonne façon de le faire, bravo pour cela.
OriginalL'auteur Abhishek Punj
Juste une chose à mentionner ici.
Si je désactive le EF de LazyLoading avec
puis, "comprendre" méthode ne permet pas le chargement de l'enfant pour les entités avec Impatience de chargement.
donc, si je veux utiliser "inclure" dans la requête, j'ai besoin de tourner sur EF est LazyLoading propriété en même temps.
Je sais que ce post date un peu, mais je suis en train de vivre la même question (EF6, le modèle de la première, après avoir désactivé LazyLoading via l'annotation dans l'edmx).
OriginalL'auteur ChinaHelloWorld