Vorrei che tutte le mie tabelle avessero alcuni campi "in comune", intendo "identici per tutte"
Il mio problema però non è creare tali campi, lo faccio senza problemi duplicandoli manualmente dall'una all'altra.
Ma vorrei che le proprietà derivate potessero essere elaborate e gestite da procedure globali, mi chiedo quale sia la strada migliore.
Detta in un altro modo, è possibile creare i propri servizi generalizzati di inde (tipo user_info, logical_deletion etc..) associandoli a campi di database personalizzati?
Spiegazione più dettagliata (tramite esempio):
- mi invento un servizio "ordinamento_manuale"
- quindi ogni tabella (associata ad un doc che dovrà utilizzare questo servizio), avrà un campo int chiamato list_order
- un altra classe, che contiene la collection di documenti definiti sopra, ha tutto il codice necessario per spostare in su o in giù i vari documenti a pannello, memorizzando poi l'ordine dentro il campo (la proprietà) list_order dei doc figli
- ora, io vorrei globalizzare l'algoritmo, ad esempio, estendendo una classe che contiene tale codice
- il problema pratico è quello che le proprietà che derivano dal db sono presenti nelle singole classi, e non possono essere "guidate" tramite overload, detto in altro modo, procedura globale che utilizza una variabile list_order globale non tocca le variabili list_order delle singole classi estese (che derivano dal db)
Ora, qualche soluzione mi viene in mente, come quella di globalizzare nell'afterload del document_helper una procedura che cerchi la proprietà in esame tramite reflection, la assegni a quella globalizzata, ed esegua l'operazione inversa al momento del salvataggio. Tuttavia mi sembra un approccio macchinoso, considerando che il 99 ,9 % delle volte tale funzione non sarà utilizzata, ed andrebbe ad appesantire il load di ogni documento (o magari collection) a livello generale.
Ho la sensazione di perdermi una soluzione ben più immediata e diretta
Avete qualche suggerimento, qualche idea sulla best practice in tal senso?
EDIT: ok, un mezzo uovo di Colombo, nel senso che per ora mi rimane ancora un po' quadrato: esplicito per ogni classe la master query, e dentro questa sostituisco le proprietà della classe estesa con quelle della classe base. ma esiste un modo semplice per globalizzare la cosa? intuisco che i domini potrebbero aiutare, ma non saprei come..