Come spostare le impostazioni generali del progetto dal database al codice? [chiuso]

4

Ho bisogno di spostare due dati delle tabelle del database in codice. Queste tabelle sono costituite da alcune impostazioni dei dati (30 e 1000 righe di conseguenza). Questo movimento di dati è un primo passo verso un maggiore refactoring. Di conseguenza mi piacerebbe sbarazzarmi di due tabelle, avere questi dati memorizzati da qualche parte nel codice.

Non posso fare:

  • usa le impostazioni dell'applicazione perché non si tratta di un progetto o anche di una soluzione per utilizzare questi dati
  • usa un altro database (noSql)

I problemi che sto affrontando al momento sono:

  • quale strumento utilizzare per spostare i dati da DB a codice (spostando manualmente 1000 righe mi spaventa)
  • non ho idea di come memorizzare queste impostazioni (liste di sola lettura, dizionari o qualcosa del genere)
  • dove memorizzare queste impostazioni per avere accesso da qualsiasi progetto

Grazie per il tuo tempo e le tue idee.

EDIT: ho bisogno di spostare i dati dal database perché questi dati sono statici, il che significa che non verrà modificato molto in futuro. Questi dati comprendono anche le impostazioni dell'interfaccia utente che non è una buona idea archiviarlo in DB. Dall'altro lato dobbiamo ridurre il numero di chiamate al database. E questi dati sono un buon candidato da rimuovere dal database.

    
posta zds 11.04.2017 - 10:12
fonte

5 risposte

3

what tool to use to move data from DB to code

Qualunque strumento tu abbia a disposizione per eseguire query arbitrarie e inserirle in un file di testo o in un altro formato di dati tabellare. Uno strumento di query SQL (probabilmente quello che ti fornisce il tuo fornitore di database), MS Excel, uno strumento che scrivi da solo, scegli la tua scelta.

no idea how to store these settings (readonly lists, dictionaries or something)

Qualunque formato per i dati tabulari che preferisci. XML, JSON, CSV, un formato di foglio di calcolo a scelta, un file di codice generato. Ciò dipende dalla complessità dei dati, dall'estensibilità di cui hai bisogno, dalle tue esigenze di manutenzione dei dati delle impostazioni e dalle tue preferenze personali.

where to store these settings to have access from any project

Scrivi una classe che può caricare i dati da qualsiasi parte del file è memorizzato e rendere tale classe disponibile per qualsiasi progetto che ne ha bisogno. Se la classe si trova all'interno di qualche DLL, è semplice rendere il file di dati una risorsa incorporata di tale DLL, in modo che la classe possa caricare i dati da lì. Ma se si desidera distribuire il file di dati in un modo che l'utente finale possa facilmente esaminare, distribuirlo solo affiancato alla propria applicazione.

    
risposta data 11.04.2017 - 11:43
fonte
2

Se si tratta di impostazioni veramente app configurate regolarmente o anche occasionalmente, suggerisco caldamente di lasciarle nelle tabelle del database in cui possono essere più facilmente aggiornate. Avere questi dati memorizzati in un unico posto è l'unico modo per garantire realmente quando un valore viene modificato e propagato ovunque. Se li sposti in un formato di file esterno o li incorpori in una DLL, i suoi progetti molto più probabili faranno le loro copie locali che aumentano notevolmente la difficoltà di aggiornare i valori ovunque ed è molto più difficile tenere traccia dei valori senza essenzialmente riscrivere la funzionalità SQL per il tuo formato personalizzato.

È meglio creare un'API pubblica a cui tutti i tuoi progetti abbiano accesso, isolando così l'accesso e la gestione del database a un singolo progetto. Potresti anche implementare un sistema di memorizzazione nella cache qui se le chiamate al database sono la preoccupazione.

    
risposta data 11.04.2017 - 14:02
fonte
1

Non sappiamo quale tecnologia stai usando e che tipo di dati hai (colonne XML o qualcosa di esotico come questo), ma se vieni da .NET world e dai suoi semplici dati stiamo parlando, abbiamo hai considerato edizione compatta di SQL Server o SQLite ?

Per SQL CE, è piccolo, veloce, può essere memorizzato in un progetto che puoi collegare ad altri progetti, hai la maggior parte delle possibilità di un database, puoi usare ORM come Entity Framework per legare ad esso e puoi separa ancora i tuoi dati e codice.

Il progetto in cui è disponibile SQL CE può essere utilizzato per la manipolazione dei parametri.

ErikEJ è master SQL CE e ha strumenti che può aiutarti.

    
risposta data 11.04.2017 - 12:12
fonte
0

Potresti creare un nuovo progetto con l'unico scopo di fornire l'accesso a questi parametri. Potrebbe quindi essere costruito come una DLL e collegato a tanti progetti e soluzioni diversi come desideri.

Sono d'accordo sul fatto che spostare manualmente 1000 righe suona come una grande opportunità per errore umano. Una volta che hai deciso la struttura del file che userai per memorizzare i parametri nel codice, ti suggerirei di scrivere un programma di utilità con la sola funzione di estrarre quei parametri dal database e scriverli nel formato di file desiderato.

    
risposta data 11.04.2017 - 10:51
fonte
0

Nel mio consiglio, puoi archiviare i dati di ricerca nel file XML formattato esterno. Questo ti aiuterà a costruire la corretta struttura dei dati nel formato XML. Questo ti darà una migliore leggibilità e manutenzione nel tempo.

Quindi leggi i dati XML di questo file dal codice e crea un oggetto business strongmente tipizzato . E usa l'oggetto nel codice come richiesto nel tuo progetto. Se i dati sono sotto forma di coppie chiave-valore, è possibile anche creare un oggetto HashTable nel codice. Un oggetto business strongmente tipizzato può anche dare il vantaggio a IDE intellisense.

Poiché è un dato di ricerca e amp; non subirà cambiamenti rapidi o frequenti, le sue prestazioni possono essere aumentate utilizzando anche il concetto di funzionalità di caching delle dipendenze dei file. Nell'applicazione, è possibile leggere il file XML una volta e preparare l'oggetto business strongmente tipizzato e agganciare l'oggetto con la dipendenza della cache collegata al file esterno. L'oggetto cache rimarrà intatto fino a quando qualcuno non toccherà il file XML e apporta le modifiche ad esso.

In MS SQL Server, è possibile utilizzare FOR XML e creare la struttura XML desiderata per copiare i dati dal database. Quindi puoi copiare l'XML in un file esterno.

    
risposta data 11.04.2017 - 11:29
fonte

Leggi altre domande sui tag