Gli ORM non si escludono a vicenda con Stored Procedures. La maggior parte degli ORM può utilizzare stored procedure. La maggior parte degli ORM genera stored procedure se lo si desidera. Quindi il problema non è né o.
Gli ORM possono generare SQL non accettabile (in termini di prestazioni) e talvolta si può voler sovrascrivere quello SQL con SQL artigianale. Uno dei modi per farlo è usando SP.
In DotNet, non utilizzare stored procedure se:
-
Se non hai familiarità con le stored procedure (non il tuo caso, ma incluso per completezza).
-
Se non vuoi introdurre uno strato di complessità e versatilità nel tuo progetto.
-
Stai creando un'applicazione che dovrebbe funzionare con diversi database o che dovrebbe essere replicata su diversi server di database (quest'ultima restrizione potrebbe applicarsi solo per alcuni database).
Nota che i trigger non devono essere confrontati con gli ORM. I trigger eseguono funzioni che non sono migliori nel codice dell'applicazione (come la registrazione o la sincronizzazione dei dati tra database).
Alcune persone preferiscono l'uso di stored procedure su SQL nel codice per diversi motivi come la sicurezza (ad esempio per prevenire l'iniezione SQL) e per la loro velocità dichiarata. Tuttavia, questo è un po 'discutibile e richiede una discussione dettagliata.
Se il tuo ORM non è in grado di generare stored procedure e devi scrivere un sistema di grandi dimensioni, devi pesare la codifica manuale aggiuntiva basata sul tuo caso.