Stringa di connessione SubSonic per SQLite
-
03-07-2019 - |
Domanda
Sto scrivendo un'app desktop che richiede un semplice livello di persistenza: ho scoperto SubSonic ed è in grado di funzionare con SQLite. Tuttavia, devo conservare il file di database nella cartella AppData dell'utente e non so come inserire tale valore in app.config: non voglio usare percorsi assoluti.
App.config può in qualche modo accedere alle variabili ambientali o alla cartella dei dati dell'applicazione di riferimento?
Soluzione
Non è possibile specificare la cartella AppData in app.config per una stringa di connessioni.
Ma quello che potresti fare è scrivere il valore nel file di configurazione durante l'installazione o al primo avvio dell'applicazione.
Altri suggerimenti
Per subsonic v2.x ignoro la stringa di connessione app.config e la imposto in fase di esecuzione prima di lavorare con il database. Il nome del fornitore rimane lo stesso ovviamente.
string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"MyApplication\Northwind.db3");
DataService.Providers["Northwind"].DefaultConnectionString =
String.Format(@"Data Source={0};Version=3;New=False;Connection Timeout=3", dbPath);
Il modo "framework" " di trovare appdata è usare Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)
Questo troverà il percorso appdata corretto indipendentemente dalla piattaforma.
Esistono diversi modi se si utilizza ASP.NET, in entrambe le lingue
Server.MapPath (" ~ ") restituirà la radice dell'applicazione come nome percorso completo, quindi puoi semplicemente aggiungere " / app_data " ad esso per ottenere il percorso completo.
In alternativa, controlla HttpContext.Current.Request e HttpContext.Current.Application ci sono numerose (e molto meglio di quella che ho appena menzionato) che ti forniranno la stessa cartella - essendo la radice dell'applicazione come percorso completo.
Nota che dovrebbero funzionare tutti anche se hai l'applicazione come cartella virtuale e una cartella normale con un'applicazione si configura in IIS su quella cartella
Tuttavia, questo è possibile solo in fase di esecuzione, quindi non può essere menzionato in app.config. puoi provare a utilizzare percorsi relaltivi da cui risiede l'app.config IE " ../ App_Data " o " / App_data " ma non sono sicuro dei tuoi esatti requisiti.
Buona fortuna