10 messaggi dal 12 novembre 2010
Esite un tool come SQL CE Toolbox per visual studio 2010 express per windows phone?
6 messaggi dal 28 gennaio 2006
Ciao Matteo, vorrei sottoporti un quesito.
Poni che io abbia creato il db con tutte le sue tabelle tramite il datacontext e tutto è perfetto e distribuito. Con la procedura dello SchemaVersion posso gestire l'eventuale aggiornamento di tutti quei DB che sono installati con una versione precedente... e fin qui tutto ok.
Però, poniamo che la mia applicazione si installi su un dispositivo che non ha mai avuto la versione 0 per intenderci del DB e quindi il metodo CreateIfNotExists prendendo in considerazione in datacontext creerebbe anche quelle colonne che si dovrebbero aggiungere con la versione 1. Il risultato è un errore "A column ID occurred more than once in the specification" in quanto la colonna esiste già perchè presente nel datacontext e lo schemaupdater non se ne accorge (e come potrebbe?) dato che non viene specificato da nessuna parte la versione.
Mi viene in mente di avere la possibilità di specificare lo schemaversion di quel "datacontext"... non so sei hai capito, ma come?

Hai qualche idea??
Ciao Manuel,
la cosa migliore è dichiarare una variabile globale in cui definisci il numero di versione del tuo database e, all'avvio dell'applicazione:

1) Se il database non esiste, lo crei e, tramite la classe DatabaseSchemaUpdater, ti limiti a impostare la proprietà DatabaseSchemaEditor a tale numero di versione.

2) Se il database esiste già, controlli il numero di versione: solo nel caso in cui sia inferiore a quello attuale, allora procedi ad aggiungere i nuovi campi sempre tramite la classe DatabaseSchemaUpdater. Anche in questo caso devi però, alla fine, impostare la proprietà DatabaseSchemaEditor con il numero di versione più recente.

Eccoti un esempio di codice:

  using (CommunityDaysContext db = new CommunityDaysContext(CommunityDaysContext.ConnectionString))
            {
                if (!db.DatabaseExists())
                {
                    db.CreateDatabase();
                    DatabaseSchemaUpdater updater = db.CreateDatabaseSchemaUpdater();
                    updater.DatabaseSchemaVersion = 2;
                    updater.Execute();
                }
                else
                {
                    DatabaseSchemaUpdater updater = db.CreateDatabaseSchemaUpdater();
                    if (updater.DatabaseSchemaVersion < 2)
                    {
                        updater.AddColumn<Session>("Speaker");
                        updater.DatabaseSchemaVersion = 2;
                        updater.Execute();
                    }
                }
            }

Matteo Pagani
Microsoft MVP - Windows Phone Development
--
Blog: http://www.qmatteoq.com
Twitter: @qmatteoq
6 messaggi dal 28 gennaio 2006
Perfetto è proprio quello che volevo fare!!!!

grazie mille.. testerò con cura la procedura e ti farò sapere. Il tool VB.NET funziona perfettamente.

Saluti
Manuel
5 messaggi dal 02 maggio 2012
ciao, io creo il database in "server explorer" ma poi non me lo ritrovo dentro "sql server compact toolbox" :(

neanche se faccio refresh

inolotre, in "sql server compact toolbox" le voci del menu contestuale "add sql server compact 4.0 connection" (ma anche per la 3.5) non sono attive


saluti
Francesco
10 messaggi dal 01 ottobre 2012
www.gtecnologie.it
Salve, avrei una domanda, io vorrei aggiornare il database da server quando l'utente preme un pulsante ( es. aggiorna) e copiarmi il database da internet nell'isostore.
E' possibile fare ciò, e se si come posso fare?
Ciao,
si è possibile. Puoi scaricare il file usando le API per l'interazione con la rete (come WebClient o HttpWebRequest) e, una volta ottenuto il file, copiarlo all'interno dello storage, con un approccio simile a quello descritto in questo post http://www.qmatteoq.com/blog/post/come-copiare-un-database-sql-ce-nello-storage-di-unapplicazione-windows-phone, con la differenza che il tuo file non sarà nel progetto ma scaricato dalla rete.

Assicurati solo, quando fai questa operazione, di non avere alcuna connessione al database aperta, altrimenti il file sarà bloccato e non avrai modo di sovrascriverlo.

Ciao!

Matteo Pagani
Microsoft MVP - Windows Phone Development
--
Blog: http://www.qmatteoq.com
Twitter: @qmatteoq
Ciao, che versione di Visual Studio stai utilizzando? SQL CE 3.5, purtroppo, è supportato solo da Visual Studio 2010

Matteo Pagani
Microsoft MVP - Windows Phone Development
--
Blog: http://www.qmatteoq.com
Twitter: @qmatteoq

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.