Question

Je voudrais créer une approche plus structurée pour charger l'entité nécessaire arbre:

J'ai besoin d'une quantité grave de données, donc je le fais en utilisant le type de sécurité comprend (juste une normale Inclure mais avec Lambda de) comme indiqué ici .

Comme je l'ai dit, je besoin d'un grand nombre de données, essentiellement un arbre d'entité entière sous 1 élément parent.

Maintenant, je pouvais faire quelque chose comme faire:

context.House
    .Include(x => x.Doors)
    .Include(x => x.Doors.FirstOrDefault().Joint)
    .Include(x => x.Doors.FirstOrDefault().Joint.FirstOrDefault().JointCategory)
    .Include(x => x.Doors.FirstOrDefault().Joint.FirstOrDefault().JointCategory.JointType)
    .Include(x => x.Windows)
    // ... same thing
    .Include(x => x.Roof)
    // ... same thing

Comme vous pouvez le voir, cette ligne remplie comprend peut être assez énorme. Ceci est en fait un échantillon très simplifié du code réel (qui ne comprend pas les maisons BTW)

Alors, ce que je voudrais faire est de créer des méthodes, responsable de sa branche dans l'arbre. Lorsque la méthode peut accepter la requête d'objet et d'inclure l'enfant, et à son tour, appeler les « méthodes enfant-chargeur ». En outre, le parent ne doit pas d'importance, tant qu'il a une propriété avec le type de l'enfant.

Cela n'a probablement pas beaucoup de sens si:

public void LoadHouse(int id)
{
    // ...
    ObjectQuery<House> query = context.House;

    // and now?
    LoadDoors(query, x => x.Door);

}

public void LoadDoors<T>(ObjectQuery<T> query, ..?..)
{
    // ... ?

    LoadJoints(...)


}

Et ainsi de suite. Mais je ne peux pas vraiment obtenir ma tête autour ... Il y a un lien manquant entre la requête entrante et appelant les méthodes de l'enfant.

Quelqu'un at-il fait quelque chose comme ça? Ou quelqu'un pourrait-il me donner quelques conseils?

Était-ce utile?

La solution

Essayez quelque chose comme ceci:

query = LoadDoors (requête, x => x.Door);

Où LOADX renvoie le résultat de l'appel Inclure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top