Je suis généralement partisan de tout mettre dans des procédures stockées, pour toutes les raisons que les administrateurs de bases de données nous rabâchent depuis des années. Dans le cas de Linq, il est vrai qu'il n'y aura pas de différence de performance avec de simples requêtes CRUD.
Mais gardez quelques éléments à l'esprit lorsque vous prenez cette décision : l'utilisation de tout ORM vous lie étroitement à votre modèle de données. Un DBA n'a aucune liberté pour apporter des modifications au modèle de données sans vous obliger à modifier votre code compilé. Avec les procédures stockées, vous pouvez masquer ces types de modifications dans une certaine mesure, puisque la liste des paramètres et le(s) ensemble(s) de résultats renvoyé(s) par une procédure représentent son contrat, et les entrailles peuvent être modifiées, à condition que ce contrat soit toujours respecté.
De plus, si Linq est utilisé pour des requêtes plus complexes, le réglage de la base de données devient une tâche beaucoup plus difficile. Lorsqu'une procédure stockée fonctionne lentement, le DBA peut se concentrer totalement sur le code de manière isolée, et dispose de nombreuses options, afin que le contrat soit toujours satisfait lorsqu'il a terminé.
J'ai vu de très nombreux cas où de graves problèmes dans une application ont été résolus par des modifications du schéma et du code dans les procédures stockées sans aucun changement dans le code déployé et compilé.
Peut-être qu'une approche hybird serait agréable avec Linq ? Linq peut, bien sûr, être utilisé pour appeler des procédures stockées.