Un avantage incroyable de LINQ to SQL par rapport aux procédures stockées est que vous pouvez créer votre requête dynamiquement.
De nombreuses requêtes complexes construites dans des procédures stockées sont compliquées principalement parce qu'elles sont construites pour gérer de nombreux cas possibles. Par exemple, une procédure stockée qui implémente un filtre avec de nombreux paramètres possibles, dont certains sont facultatifs, doit être construite pour s'adapter aux diverses permutations et peut devenir très laide. Vous pouvez, bien sûr, construire la même requête dans LINQ to SQL comme une requête de grande taille, mais la beauté de LINQ to SQL est que vous n'en avez pas besoin. En utilisant la logique de contrôle de flux et le chaînage de requêtes, vous pouvez construire une requête plus simple qui utilise uniquement les paramètres actifs dans la recherche, en omettant les vérifications ou la logique alternative nécessaire pour traiter les cas où les paramètres facultatifs ne sont pas fournis . En utilisant Dynamic LINQ et/ou PredicateBuilders, ces requêtes peuvent également être arbitrairement complexes - mais encore plus simples que celles implémentées par la procédure stockée.
Pour accomplir la même chose avec des procédures stockées, vous devez écrire et maintenir de nombreuses procédures stockées différentes, chacune faisant le même travail, mais pas le même. Ensuite, vous devrez avoir la même logique de flux pour choisir entre ces procédures. Cela devient rapidement intenable à mesure que le nombre de paramètres augmente.
Un autre avantage de LINQ, IMO, est qu'il permet au développeur d'écrire les requêtes en utilisant des idiomes plus naturels (dans mon cas, C#). Bien que je puisse écrire du SQL, il est plus naturel pour moi d'écrire du code C#. Je vais mieux et plus vite.
Dublicate: http://stackoverflow.com/questions/14530/linq-to-sql-vs-stored-procedures –