Question

J'utilise L2S modèle Repository dans mon application web ASP.Net 3.5. Mais je ne suis pas tout à fait satisfait de la performance telle qu'elle est vécue sur le live. Je cherchai Google et suis tombé sur SQL en utilisant SqlCacheDependency Caching classe. Mais je suis tout have'nt tutoriel ou un lien qui vous expliquera comment l'utiliser dans mon scénario.

Alors les gars aide de moi ... Toute aide ou des conseils seront très appréciés.

S'il vous plaît utiliser certains codes échantillons ou des références en ligne ....

Merci à l'avance

Mise à jour: Mon dépôt

public interface IRepository<T> where T : class
{
    T GetById(int id);
    IQueryable<T> GetAll();
    void SaveOrUpdate(T entity);
    void DeleteOnSubmit(T entity);
}
Était-ce utile?

La solution

Parfois LINQ to SQL fait des requêtes de manière inattendue. Avez-vous vérifié comment vos requêtes LINQ sont traduites en sql? Utilisez Profiler Sql Server (disponible dans le menu Outils dans le serveur de SQL) pour vérifier les requêtes générées. J'ai écrit quelques informations à ce sujet .

Une fois que vous savez que vous avez de bonnes requêtes qui ont généré, vous devriez regarder si l'exécution de quelqu'un d'entre eux est un goulot d'étranglement. Le profileur peut aider ici aussi. Si certaines requêtes sont en cours d'exécution lente, essayez d'ajouter des index appropriés.

Sauf si vous avez un site de volume très, ces étapes devrait vous donner de bonnes performances sans avoir à faire la mise en cache.

Autres conseils

Vous n'avez pas décrire comment vous utilisez LINQ to SQL avec votre référentiel. En gros, vous réutilisez le même DataContext pour tous les dépôts créés au cours d'une seule demande, ou chaque référentiel obtenir sa propre instance DataContext? Si c'est ce dernier, vous perdez sur cachability interne du DataContext.

Un autre domaine où la performance peut être améliorée est si vous avez des questions fréquemment utilisés qui contiennent beaucoup de couches de jointures (et pas seulement une seule table select). L'utilisation d'un CompiledQuery ici va accélérer les choses de façon drastique . CompiledQueries ne doivent générer la première fois qu'ils sont utilisés, sinon recompiler une requête de chaque fois qu'il est utilisé.

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