Frage

Ich versuche immer noch, mich mit LINQ und dem Zugriff auf eine SQL-Datenbank vertraut zu machen.

Mir wurde immer beigebracht, dass Sie nur Berechtigungen zur Ausführung gespeicherter Prozeduren für Ihre Daten haben sollten.

Sie sollten niemals auswählen/einfügen/aktualisieren/löschen.

(Dies liegt an der Leistung und Sicherheit)

Um die Daten aus LINQ abzurufen, benötigen Sie natürlich ausgewählte Berechtigungen.Ich weiß, dass Sie gespeicherte Prozesse mit LINQ verwenden können, aber da ich keine Verknüpfungen durchführen kann, worum geht es?

Habe ich etwas verpasst???

War es hilfreich?

Lösung

1) Wir sind Programmierer, keine DBA-Faschisten.Wenn Ihre Anforderungen besagen, dass die Datenbank zu 100 % gesperrt sein muss, ist Linq nicht das Richtige für Sie.Ich bin kein Datenbankadministrator und glaube daher, dass der größte Teil des Leistungs-/Sicherheitsrummels genau darauf zurückzuführen ist.Linq ist für mich.

2) Sie können Verknüpfungen mit Linq durchführen.

@Philippe:Linq wandelt Auswertungen automatisch in Abfrageparameter um und bietet so einen gewissen SQL-Injection-Schutz.Dennoch müssen Sie Ihre Anforderungen genau prüfen, um festzustellen, wie viel Sicherheit Sie benötigen und auf welchem ​​Niveau.Linq macht den Umgang mit der Datenbank viel einfacher, aber es macht es einfacher, das Sicherheitsdesign in den Hintergrund zu rücken, was eine schlechte Sache ist.

Andere Tipps

Nun, aus Sicherheitsgründen sollten Sie in Abfragen keine vom Benutzer eingegebenen Daten eingeben.Wenn Sie sich an diese Regel halten, sehe ich das Problem der Auswahlberechtigung nicht.

Ob Ihr gesamter Datenbankzugriff „hinter“ gespeicherten Prozeduren erfolgt, hängt von den Anforderungen der Anwendung und des Unternehmens ab.Ich habe Systeme implementiert, die Ansichten verwenden, um alle Daten und gespeicherten Prozeduren für alle Aktualisierungen abzurufen.Dies ermöglicht eine zentralisierte Sicherheit und Datenbanklogik, während Front-End-Entwickler bei Bedarf weiterhin SQL-Abfragen verwenden können.

Wie so viele andere Dinge in der Programmierung hängt es von den Anforderungen Ihres Projekts ab.

LinqToSql unterstützt gespeicherte Prozeduren.Scott Gu hat einen Beitrag dazu:

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

Ich stimme Jeff Atwood in der Frage „Stored Procedures vs.Problem mit Inline-SQL/LINQ: Wer braucht überhaupt gespeicherte Prozeduren?.

Ich bin verwirrt darüber, warum Sie überhaupt einen JOIN ausführen möchten, wenn Sie zu den SPROCs-für-alles gehören.Sollten Sie diesen JOIN nicht in einen anderen SPROC einbinden?

Wie Will sagte, wurde LINQ nicht für die Art der DB-Nutzung entwickelt, von der Sie sprechen;Es wurde entwickelt, um uns statisch typisiertes Inline-SQL zu liefern.Sie können den Zugriff jedoch weiterhin über Benutzerberechtigungen steuern, wenn Sie LINQ to SQL verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top