Entity Framework Gespeicherte Prozeduren vs Generierte SQL

Ich habe das entity framework in ein paar Projekten. In jedem Projekt habe ich verwendet, die gespeicherten Prozeduren zugeordnet, die Personen wegen der bekannten Vorteile von gespeicherten Prozeduren - Sicherheit, Wartbarkeit, etc. Allerdings, 99% der gespeicherten Prozeduren sind grundlegende CRUD-Prozeduren. Dies scheint, wie es unterschlägt eines der wesentlichen, zeitsparenden Funktionen der Entity Framework-SQL-generation.

Ich gelesen habe, einige der Argumente in Bezug auf gespeicherte Prozeduren vs. generierte SQL von Entity Framework. Während der Verwendung von CRUD-SPs ist besser für die Sicherheit, und die generierte SQL von EF ist oft komplexer als nötig, ist es wirklich alles zu kaufen in Bezug auf die performance oder Wartbarkeit zu verwenden SPs?

Hier ist, was ich glaube:

  • Die meisten der Zeit, ändern eines SP erfordert die Aktualisierung des Datenmodells
    sowieso. Also, es ist nicht Kauf viel in Bezug auf die Wartbarkeit.
  • Für web-Anwendungen, die Verbindung mit der Datenbank verwendet eine einzelne Benutzer-ID spezifisch für die Anwendung. So, Benutzer haben nicht einmal direkte Zugriff auf die Datenbank. Das reduziert die Sicherheit profitieren.
  • Für eine kleine Anwendung, die leicht verringerte Leistung von über
    generiert SQL würde wahrscheinlich nicht viel von einem Problem. Für hohen
    Lautstärke, performance-kritische Anwendungen, würde die EF auch ein weiser sein
    Wahl? Plus, sind die insert - /update - /delete-Anweisungen generiert
    von EF wirklich so schlecht?
  • Senden jedes Attribut an eine gespeicherte Prozedur ist es, die eigene Leistung Strafen, in der Erwägung, dass die EF-generierten code sendet nur die Attribute, die auch wirklich geändert wurden. Wenn dabei die updates zu große Tabellen, die den Netzwerkverkehr erhöht und den Aufwand für die Aktualisierung aller Attribute wahrscheinlich negiert die Leistung von gespeicherten Prozeduren.

Mit dieser sagte, meine konkreten Fragen sind:

Sind meine überzeugungen, die oben aufgeführt sind, korrekt? Die Idee ist, immer mit SPs etwas, das ist "old school" nun, dass ORMs sind an Popularität gewinnt? In Ihrer Erfahrung, das ist der bessere Weg zu gehen mit EF-Abbildung SPs für alle insert /update /deletes, oder mit EF-generierten SQL-Code für die CRUD-Operationen und nur mit SPs für komplexere Sachen?

modifying an SP requires updating the data model anyway SP ' s am Ende deutlich erhöhen die Kosten für die Wartung Ihrer Anwendung, nicht nur, weil Sie jede Veränderung in mindestens 5 stellen (1 SP für jede insert -, update, und löschen Sie mindestens eine auswählen, und dann auch in Ihrer Entität-Modell), sondern auch, weil für alles, was nicht eine einfache CRUD-operation, die Sie sich verstecken Anwendungslogik außerhalb der Anwendung, der Entwickler hat zu hüpfen hin und her zwischen verschiedenen IDE.

InformationsquelleAutor DCNYAM | 2011-07-22

Schreibe einen Kommentar