Les références Entity Framework ne se chargent pas automatiquement

ado.net c# entity-framework

Question

Dans ADO.Net Entity Framework, j'ai un objet qui contient 4 références à d'autres objets. Pour une raison quelconque, lorsque j'interroge ces références, deux d'entre elles se chargent automatiquement (comme prévu) et deux d'entre elles renvoient toujours la valeur null.

Bizarrement, quand je demande manuellement aux références de charger, elles se chargent simplement.

Par exemple:

if (account.HoldingEntity == null && 
    account.HoldingEntityReference.EntityKey != null) {

    account.HoldingEntityReference.Load();
    account.HoldingEntity = account.HoldingEntityReference.Value;
}

Lorsque je vérifie pour la première fois le HoldingEntity il est toujours nul, mais le Load renverra le HoldingEntity sans problème.

Des indices?

Merci!

Réponse acceptée

À l'aide des entités ADO.NET, vous devez spécifier les entités à charger automatiquement avec Include , comme dans

Dim entity = (From e in db.Entities.Include("SubEntity"))

Réponse populaire

Comme d' autres ont dit que vous devez .Include() en v1 pour éviter d' avoir à appeler .Load()

En 4.0, vous pourrez définir DeferredLoadingEnable d sur votre ObjectContext (je pense que nous ObjectContext ce nom en LazyLoadingEnabled plus approprié à temps pour la version bêta2).

Quant à savoir pourquoi vous obtenez 2 relations déjà chargées de toute façon. C'est probablement un effet secondaire de quelque chose appelé Correction de la relation.

Lorsque deux entités associées se trouvent dans le même contexte, leur relation est automatiquement corrigée de manière à se désigner. Donc, si (comme je le suppose) 2 des 4 entités sont déjà dans votre contexte, lorsque vous effectuerez la requête, vous vous retrouverez dans une situation où 2 de vos relations sont chargées, même si vous n'avez pas appelé .Include() ou .Load() .

J'espère que cela t'aides

A bientôt Alex



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow