Je suis curieux de savoir quelle est la meilleure pratique pour cette situation dans Entity Framework 4.0. Je l'entité Carte suivante:Entité de suivi automatique - Chargement de la propriété de navigation d'une propriété de navigation
Entité A -> Entité B -> Entité C
Où l'entité A contient une liste des entités B dont chacun contient une liste des entités C de. J'utilise des entités de suivi auto et quand je charge l'entité AI je fais quelque chose de similaire à ceci:
EntityA entityA = ctx.EntityA.Include("EntityB").Where(x => x.Id == id).SingleOrDefault();
Quand je tentais de le faire:
EntityA entityA = ctx.EntityA.Include("EntityB").Include("EntityC").Where(x => x.Id == id).SingleOrDefault();
Il échoue parce qu'il ne peut pas trouver la propriété de navigation ' Entité C '. Est-il possible de charger les propriétés de navigation? Je devrai également être capable de suivre les changements, accepter les changements et MarkAsDeleted pour mes différentes opérations CRUD. En tant que question secondaire, existe-t-il un attribut commun utilisé pour identifier une propriété de navigation dans Entity Framework? J'espérais utiliser la réflexion et la récursivité pour identifier toutes mes propriétés de navigation.
J'ai utilisé un template STE T4 pour générer mes entités, cependant, je suis toujours obligé de faire ce qui suit: foreach (EntityB entityB dans entity.EntityB) entityB.AcceptChanges(); – Brandon
De même, existe-t-il un moyen d'inclure automatiquement les propriétés de navigation lors du chargement d'une entité? Une sorte d'attribut [Inclure]? – Brandon
Le 'ObjectContext' a une propriété' ObjectContext.ContextOptions.LazyLoadingEnabled' mais après l'avoir essayé moi-même, je ne pense pas qu'il s'applique aux entités sef-tracking. Encore une fois, vous pouvez modifier le modèle T4 pour qu'il prenne en charge le chargement paresseux. –