Comment utiliser l'indice NOEXPAND avec LINQ to SQL?
-
01-10-2019 - |
Question
J'ai une vue indexée que je dois préciser l'indice NOEXPAND pour afin qu'il puisse accomplir raisonnablement. Malheureusement, comme on le voit en ce qui concerne la modification du SQL généré LINQ to requête T-SQL dans l'indication NOLOCK il semble qu'il n'y a pas moyen facile de profiter de ces conseils directement ou est-il?
Ma pensée est qu'il serait logique de permettre la personnalisation de ce genre de choses à travers l'utilisation d'attributs ou déclarative par la dbml. En outre, depuis LINQ to SQL semble que le travail de ciblage SQL Server, il est logique que nous sommes également en mesure de tirer parti de ces fonctionnalités avancées (si elles existent). Quelle que soit la mise en œuvre si je suis intéressé par des moyens créatifs de résoudre ce problème.
La solution
Je l'ai trouvé une solution de contournement qui semble fonctionner, mais nécessite de faire une seconde vue pour chaque vue SQL que l'on voudrait utiliser l'indice NOEXPAND avec. Dans la deuxième vue suffit de sélectionner tous les champs de la vue d'origine et amure sur la pointe NOEXPAND. Toute requête SQL à Linq qui a besoin d'utiliser l'indice NOEXPAND peut maintenant juste cibler ce point de vue qui enveloppe l'original.
Autres conseils
Je suis totalement d'accord, mais je ne crois pas qu'il y ait méthode telle. En EF4 vous pouvez utiliser le ExecuteStoreCommand
qui vous permettra d'exécuter directement SQL. Cela peut être votre seule option si la performance est inacceptable.
== == EDIT
Vous pouvez aussi le faire dans LINQ to SQL par la méthode ExecuteQuery
.