Sono responsabile della progettazione di un'applicazione (.NET) con queste funzionalità:
- È un'app desktop (forse in futuro sarà basata sul Web)
- La sua funzionalità consiste nel fornire agli utenti dati analizzati recuperati dal database. Viene eseguito eseguendo query complesse generando grafici e tabelle griglia per mostrare le informazioni. Gli utenti analizzano i dati per prendere decisioni. I dati vengono archiviati in tabelle relazionali e devono essere trattati prima di essere visualizzati. Le informazioni sono relative a statistiche, contabilità, ecc.
- Le query non sono troppo complicate. Più join con GroupBy, Sum e altri calcoli saranno la situazione peggiore.
- Il database verrà migrato da Oracle = > SQL Server
- Il modello è correlato all'assemblaggio di automobili. Memorizza informazioni sugli oggetti che compongono un'auto (prezzo, modello, ecc.). Memorizza anche informazioni sui provider, sugli account.
- La logica del dominio sarà in grado di calcolare i budget per alcune macchine specifiche in un clic, sfruttando molte query e calcoli.
I miei dubbi / domande sono:
A) Voglio mettere tutta la logica all'interno del codice, evitando l'uso di stored procedure nel database. Non mi piace il fatto che non possano essere testati con "codice generico" (che funzionerà malgrado il motore db) e il loro aspetto di essere un black-box che emette dati. Inoltre, non voglio, le modifiche del motore di database influiscono troppo sull'app. Ho ragione? Preferisco che fossero implementati in LINQ o altro approccio che ritieni possa adattarsi. Vedi qualche svantaggio su questo? Probabilmente problemi di memoria? (I dati gestiti contengono migliaia di record con dozzine di tabelle)
B) La logica delle query dovrebbe andare nel livello del dominio. Quale sarà un buon schema / approccio per posizionarli in modo scalabile? Il numero di query aumenterà durante la manutenzione dell'app.
C) Conosci un buon approccio per testare le query in LINQ? Dati falsi, moq, ecc.? Alcuni consigli su questo?