2010-06-08 4 views
1

Je suis actuellement en train d'utiliser les entités de suivi automatique de .NET Entity Framework, mais je voudrais accélérer l'exécution de mes requêtes.Auto-suivi des entités avec des vues pré-générées

La première chose que tout le monde semble suggérer est de générer les vues pour le modèle au moment de la compilation. En utilisant les fichiers ssdl etc, j'ai été capable de créer un fichier 'MyModel.Views.cs', qui est compilé dans mon projet. Cependant je n'ai vu aucun avantage de ceci ceci quoi toujours? Est-ce que j'ai râté quelque chose? Est-ce que je n'en tire aucun avantage si j'utilise des entités Self Tracking? De quelles autres façons puis-je augmenter les performances avec Entity Framework? Comment créer des vues pré-compilées, mais avec des paramètres? Une requête de recherche, par exemple, doit prendre différents paramètres, mais pourrait être accélérée!

Merci

Répondre

0

Eh bien, rappelez-vous que les vues pré-générés aident seulement pour certaines opérations. Ils aident pour les requêtes qui sont construites par Entity Framework lui-même. Par exemple, si vous faites un Load sur une propriété connexe, une vue pré-générée sera utilisée si elle est disponible. Si, par contre, vous effectuez une projection ou un appel personnalisé Where, les vues pré-générées ne peuvent pas être utilisées, car elles ne représentent pas votre requête personnalisée. Cela dépend donc de ce que vous faites.

L'avantage de la pré-génération de vue est qu'elle est presque gratuite. Un peu de bidouillage avec votre fichier de projet, et vous obtenez une amélioration des performances sur certaines opérations. Mais il ne fait pas tout plus rapidement.

+0

Je vois, j'avais l'impression que cela prendrait moins de temps pour interpréter mes requêtes, mais ce que vous dites est logique. Merci pour votre temps! – James

0

Les vues pré-générées sont toujours utilisées quelle que soit la requête que vous utilisez. Laissez-moi vous expliquer ce que sont les vues pré-générées. Lorsque vous interrogez un modèle de données d'entité pour la première fois, il est converti en vues esql. C'est la première étape qui se produit au moment de l'exécution et à la demande lorsque vous interrogez le modèle. Une fois cette vue créée, elle est mise en cache pour la durée de vie du domaine d'application. Cependant générer la vue est seulement un coût ponctuel tout comme le site asp.net qui prend un premier coup lorsque quelqu'un accède à votre site pour la première fois. Vous gagnez du temps pour le premier utilisateur, mais après, c'est vraiment la même expérience. Vous ne devriez envisager de pré-générer des vues que si votre modèle est grand et a un coût de démarrage élevé pour la première requête. Il y a beaucoup de façons d'améliorer les performances de l'entité de suivi automatique et EF en général. J'ai un chapitre entier dans mon livre qui parle d'améliorer les performances dans EF.