Question

J'essaie toujours de comprendre LINQ et d'accéder à une base de données SQL.

On m'a toujours appris que vous ne devriez avoir que les autorisations d'exécution des procédures stockées sur vos données.

Vous n'auriez jamais dû sélectionner/insérer/mettre à jour/supprimer.

(C'est à cause des performances et de la sécurité)

Pour extraire les données de LINQ, vous avez évidemment besoin d'autorisations de sélection.Je sais que vous pouvez utiliser des procédures stockées avec LINQ, mais comme je ne peux pas effectuer de jointures, à quoi ça sert ?

Ai-je raté quelque chose ???

Était-ce utile?

La solution

1) Nous sommes des programmeurs, pas des fascistes DBA.Si vos exigences stipulent que la base de données doit être verrouillée à 100 %, Linq n'est pas pour vous.Je ne suis pas un administrateur de base de données, donc je pense que l'essentiel du battage médiatique en matière de performances/sécurité n'est que cela.Linq est fait pour moi.

2) Vous pouvez effectuer des jointures avec Linq.

@Philippe:Linq transforme automatiquement les évaluations en paramètres de requête, offrant ainsi une certaine protection contre les injections SQL.Cependant, vous devez encore évaluer attentivement vos besoins pour déterminer le niveau de sécurité dont vous avez besoin et à quels niveaux.Linq facilite grandement la gestion de la base de données, mais il permet également de mettre plus facilement la conception de sécurité en veilleuse, ce qui est une mauvaise chose.

Autres conseils

Eh bien, pour des raisons de sécurité, vous ne devez saisir aucune donnée saisie par l'utilisateur dans les requêtes.Si vous respectez cette règle, je ne vois pas le problème d'avoir une autorisation de sélection.

Le fait que tous vos accès à la base de données se trouvent « derrière » les procédures stockées dépend des besoins de l'application et de l'entreprise.J'ai implémenté des systèmes qui utilisent des vues pour obtenir toutes les données et procédures stockées pour toutes les mises à jour.Cela permet une sécurité et une logique de base de données centralisées tout en permettant aux développeurs front-end d'utiliser des requêtes SQL le cas échéant.

Comme tant d’autres choses en programmation, cela dépend des besoins de votre projet.

LinqToSql prend en charge les procédures stockées.Scott Gu a un article à ce sujet :

http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

Je suis tout à fait d'accord avec Jeff Atwood sur les "Procédures stockées vs.Problème "Inline SQL/LINQ" : De toute façon, qui a besoin de procédures stockées ?.

Je ne comprends pas pourquoi vous voudriez même effectuer un JOIN si vous êtes dans la foule des SPROC pour tout ;ne devriez-vous pas envelopper ce JOIN dans un autre SPROC ?

Comme Will l'a dit, LINQ n'a pas été conçu pour le type d'utilisation de base de données dont vous parlez ;il a été conçu pour nous donner du SQL en ligne typé statiquement.Vous pouvez cependant toujours contrôler l'accès via les autorisations utilisateur si vous utilisez LINQ to SQL.

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