¿Deberían las consultas vivir dentro de las clases que necesitan los datos? ¿Deben las consultas vivir en procedimientos almacenados en la base de datos para que sean reutilizables?¿Dónde deberían estar las consultas de la base de datos en vivo?
En la primera situación, cambiar sus consultas no afectará a otras personas (ya sea otro código o personas que generan informes, etc.). En el segundo, las consultas son reutilizables por muchos y solo existen en un solo lugar, pero si alguien las rompe, se rompen para todos.
+1. Las mejoras de ORM han hecho que el argumento del procedimiento almacenado por rendimiento sea menos relevante. Dejando a un lado las cuestiones de rendimiento, me gusta el código posicionado de la manera que mejor te permita actualizar y mantener en el futuro. – jro
Esto es excelente para CRUD, pero ¿qué pasa con las consultas más complejas que acceden a varias tablas? ¿Qué pasa con el acceso a las tablas que no tienen claves principales (y estás atrapado porque pertenecen a un proveedor externo)? –
Estás en lo correcto, Señor. Un ORM no se puede usar para cada escenario. En los casos que describes, los procesos almacenados pueden ser una mejor ruta. Sé que los ORM líderes proporcionan soporte para procs almacenados pero no tienen mucha experiencia en trabajar con ellos a través de un orm. –