3 votes

Puis-je utiliser une requête compilée dans un service web ?

J'ai un service WCF avec une méthode de sélection nécessitant uniquement un identifiant. J'ai besoin d'utiliser plusieurs (20+) options de chargement pour obtenir tout ce dont j'ai besoin pour retourner, donc je pense que cela rend une requête assez compliquée et la compiler serait une bonne idée. La seule manière que j'ai trouvée jusqu'à présent est de créer un contexte de données statique et des options de chargement à utiliser avec la requête compilée. Sinon, il se plaint de l'utilisation d'un contexte différent de celui avec lequel il a été compilé. Alors ma question est devrais-je le faire? Avoir un contexte de données statique sur un service web causera-t-il des problèmes? Il ne serait utilisé que pour cette méthode. Toutes les autres méthodes créent les leurs. J'ai juste peur que je pourrais payer pour cette décision à l'avenir donc tous les conseils seraient les bienvenus! Merci!

    private static DataLoadOptions loadOptions = GetDataLoadOpt();

    private static readonly Func SelectItem =
        CompiledQuery.Compile((ItemsDataContext DataContext, int ItemId) =>
            DataContext.Items.Where(r => r.ItemID == ItemId).FirstOrDefault());

    private static DataLoadOptions GetDataLoadOpt()
    {
        var loadOpts = new System.Data.Linq.DataLoadOptions();
        loadOpts.LoadWith(d => d.ItemProp);
        .
        .
        .
        return loadOpts;
    }

0voto

baileyrt Points 399

Les appels de service Web sont distincts. Je n'ai pas trouvé que le fait d'avoir un contexte partagé et statique permettait de gagner du temps car l'appel finit par créer une nouvelle instance de toute façon. De plus, j'ai plusieurs objets qui ont des piles d'options de chargement très grandes et compliquées dans quelques-uns de mes projets. Dans certains cas, j'ai une légère chute de performances car je ramène tellement de tables, mais si les jointures sont solides (base de données bien conçue), ce n'est pas si mal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X