Prima di tutto tutte le applicazioni non banali hanno problemi con ORM. Sono grandi per le operazioni CRUD ma oltre a questo semplicemente non funzionano. Questo non è un problema unico per la tua situazione. Non permettere a nessuno di dirti che stai facendo qualcosa di sbagliato correndo ai limiti di qualsiasi ORM che stai usando, tutti aspirano a qualcosa, il più delle volte prestazioni e flessibilità.
SQL è solo codice sorgente. Indipendentemente dal fatto che sia incorporato nel linguaggio dell'applicazione o archiviato nei propri file, è solo il codice sorgente che deve essere gestito come qualsiasi altro asset del codice sorgente.
L'idea che separare questa logica e archiviarla da un'altra parte (stored procedure) è una panacea, è falsa, sposta semplicemente il problema da qualche parte (e probabilmente da qualcun altro), causando più problemi di sincronizzazione a lungo termine .
Tutti i sistemi software dovrebbero cercare alta coesione (a volte indicato come località ), questo significa che nel tuo caso, metti la logica più vicina a dove viene usata in modo che sia facilmente trovata, gestita e segua Principles of Almstononard .
Anche l'atto di metterlo nel proprio file caricato come risorsa esterna dall'applicazione può mettere un livello artificiale di indirezione che può causare confusione e problemi di manutenzione.