Los ORM (mapeo relacional de objetos) no son mutuamente excluyentes con los procedimientos almacenados. La mayoría de los ORM pueden utilizar procedimientos almacenados. La mayoría de los ORM generan procedimientos almacenados si así lo elige. Por lo tanto, el problema no es tampoco.
Los ORM pueden generar SQL inaceptable (en términos de rendimiento) y es posible que a veces desee anular ese SQL con SQL hecho a mano. Una de las formas de lograr esto es mediante el uso de SP (procedimientos almacenados).
En DotNet, no use procedimientos almacenados si:
Si no está familiarizado con los procedimientos almacenados (no es su caso, pero se incluye para completar).
Si no desea introducir una capa de complejidad y versificación en su proyecto.
Está creando una aplicación que debería funcionar con diferentes bases de datos o que tendría que replicarse en varios servidores de bases de datos (esta última restricción puede aplicarse solo a algunas bases de datos).
Tenga en cuenta que los desencadenantes no se pueden comparar con los ORM. Los disparadores realizan funciones que es mejor que no estén en el código de su aplicación (como el registro o la sincronización de datos en bases de datos).
Algunas personas prefieren el uso de procedimientos almacenados en lugar de SQL en el código por diferentes razones, como la seguridad (por ejemplo, para evitar la inyección de SQL) y por su velocidad reclamada. Sin embargo, esto es algo discutible y necesita una discusión detallada.
Si su ORM no puede generar Procedimientos almacenados, y tiene que escribir un sistema grande, entonces necesita ponderar la codificación manual adicional según su caso.