SQL Compact e le modifiche fantasma

Lo scrivo per ricordarmelo, visto che ci ho perso sin troppo tempo!

Per popolare il contenuto di un database ho creato una semplice applicazione console che legge un file csv.

Peccato che una volta eseguita l’applicazione, andata a buon fine senza alcun messaggio di errore, il database non contenesse alcuna modifica!

Rieseguendo l’applicazione, ogni volta era come fosse la prima volta. Ho pensato ad ogni possibile causa, anche perché facendo dei controlli all’interno dell’applicazione il database risultava effettivamente modificato.

Alla fine ho trovato la soluzione su Stackoverflow:

Quando si esegue un’applicazione all’interno di Visual Studio, la build fa una copia del file di database nella cartella bin/debug (o bin/release), ed è li che modifica il database, nonostante le impostazioni di connessione, che evidentemente cambia al volo.

I controlli successivi li facevo nel file del progetto (come da impostazioni di connessione) e non trovavo le modifiche che l’appicazione avrebbe dovuto apportare. Alla successiva esecuzione dell’applicazione, poiché il file aveva le proprietà di build impostate a “content” e “copy always”, nella cartella bin/debug veniva riscritto il file di database originale, ovvero senza modifiche, e tutto ricominciava da capo.

Davvero diabolico.

Da notare che facendo il deploy dell’applicazione ovviamente questo meccanismo non viene messo in atto (il contesto di esecuzione non muta, nel senso che il file di database e la cartella di esecuzione del runtime è quello di installazione) e quindi il problema non si pone.

posted @ martedì 22 novembre 2011 11:53

Print

Comments on this entry:

# re: SQL Compact e le modifiche fantasma

Left by Marco Bonera at 22/11/2011 23:23
Gravatar
Bastava che me lo dicessi !!! ;-)) Ho avuto anche io lo stesso problema...
Comments have been closed on this topic.
«dicembre»
domlunmarmergiovensab
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234