wp7 sql compact local database
DESCRIPTION
Una itroduzione all'uso di SQL Compact com database locale per Windows Phone 7TRANSCRIPT
![Page 2: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/2.jpg)
Database locale per Win Phone 7.1
• Scenari d’uso• SQL CE per WP 7.1• Isolated Storage• O/R Mapping• Planner App Model• Planner App Demo• DB Schema Update• Best Practices• Tools• Take away
![Page 3: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/3.jpg)
Scenari d’usoApplicazioni che fanno uso di archivi di media grandezza sui quali occorre poter fare ricerche complesse e che devono restituire i dati con rapidità ed efficienza, senza occupare notevoli spazi di memoria.
Applicazioni che consentono di operare anche in modalità disconnessa su dati ottenuti dalla rete.
![Page 4: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/4.jpg)
SQL CE for WP7 - Intro• Con Windows Phone 7.1 (Mango) la Microsoft propone una
soluzione per la gestione di database locale basata sulla versione di SQL Compact per Windows Phone.
• E’ incluso nel S.O. quindinon c’è alcuna libreria daaggiungere al progetto edi conseguenza la nostraapplicazione non viene«appesantita».
![Page 5: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/5.jpg)
SQL CE for WP7 – LINQ to SQL
• Usa una versione ridotta di LinqToSql che non può ne eseguire direttamente comandi Transact-SQL ne utilizzare il linguaggio DDL (Data Definition Language).
• Il motivo è semplice: SQL CE per WP7 è ottimizzato per gli scenari d’uso di uno smartphone.
![Page 6: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/6.jpg)
SQL CE for WP7 – Isolated storage• Il database è contenuto nell’Isolated Storage, il che significa
che i dati non possono essere scambiati e utilizzati tra applicazioni differenti ma solo localmente all’applicazione che l’ha creato.
![Page 7: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/7.jpg)
Application Isolated Storage• E’ un’area di archiviazione riservata all’applicazione• E’ identificata dall’Application Guid:
• Esiste un tool per copiare l’Isolated Storage nell’Hard Disk del PC e viceversa (ISETool):
![Page 8: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/8.jpg)
O/R Mapping Kindergarten• Ad ogni tabella corrisponde una classe, le cui proprietà
rappresentano le colonne della tabella. • Le istanze della classe rappresentano
le righe della tabella.
![Page 9: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/9.jpg)
O/R Mapping - Code FirstIl Mapping tra il modello ad oggetti e il database relazionale si dichiara mediante attributi che decorano il codice delle classi:
Task.cs
![Page 10: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/10.jpg)
O/R Mapping - Code First (part 2)Per le relazioni si utilizza l’attributo Association:
Task.cs
Project.cs
![Page 11: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/11.jpg)
Planner App – Class diagram
![Page 12: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/12.jpg)
Planner App
Demo
![Page 13: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/13.jpg)
Database Schema Update• In caso di modifiche non distruttive, come ad esempio per
l’aggiunta di una colonna, si può usare la classe helper DatabaseSchemaUpdater:
Task.cs App.xaml.cs
![Page 14: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/14.jpg)
Best Practices• Usare Skip/Take per
la Data Virtualizatione Large Batch Update
• Velocizzare gliaggiornamenti conunaVersion Column
• Minimizzare l’uso dimemoria conINotifyPropertyChanging
![Page 15: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/15.jpg)
Best Practices (part 2)• La strategia da adottare per registrare i cambiamenti nel database
cambia di volta in volta, a seconda dello scenario d’uso.
• Per fare la scelta giusta, occorre tener presente i seguenti punti: Il metodo SubmitChanges è sincrono e mantiene il controllo finché le modifiche non
sono registrate nel database.
L’applicazione ha un tempo limitato per salvare le modifiche quando viene chiusa.
• In generale, è buona pratica salvare le modifiche al passaggio da una pagina all’altra dell’applicazione, e in ogni caso privilegiando la registrazione dei dati modificati dall’utente.Altre operazioni di sincronizzazione o modifica dei dati, relative ad esempio a dati presenti on the cloud, possono sempre essere ripetute in un secondo momento, perché SQL CE mantiene l’integrità dei dati grazie all’uso delle transazioni.
![Page 16: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/16.jpg)
Tools• ISETool.exe
Command line tool per copiare dall’Isolated Storage al File System del PC e viceversa:
• SQL Server Compact Toolbox (di Erik Ejlskov Jensen)
Visual Studio add-in scaricabile dalla Visual Studio Gallery:
ErikEJ
ts - Take snapshotrs - Restore snapshotxd - target the emulatorde - target a device
![Page 17: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/17.jpg)
Take away• Per operare col database si usa LINQ to SQL.
LINQ è utilizzato per le queries, T-SQL non è supportato
• Il file del database è contenuto nell’Isolated Storage dell’applicazione
• Non è necessario distribuire assemblies che aumentano il peso della nostra applicazione perche con Windows Phone Mango il supporto per il databaselocale è parte del framework.
• Una reference all’assembly System.Data.Linq deve essere aggiunto al progetto
• La stringa di connessione ha un formato speciale, del tipo:"Data Source='isostore:/DIRECTORY/FILE.sdf'";
• In questa versione di Windows Phone 7.1 Mango è preferibile utilizzare la modalità code-first per definire lo schema del database, visto che al momento non c’è un Visual Designer che aiuti nel mappare e configurare le classi necessarie a lavorare col database. In alternativa si può usare il plugin di Erich EJ, che (utilizzando SqlMetal) genera le suddette classi in automatico, a partire da un database SQL CE esistente.
• Requisiti minimi:Visual Studio 2010 SP1 e Windows Phone 7.1 Mango Developer Tools
![Page 18: WP7 SQL Compact local database](https://reader036.vdocument.in/reader036/viewer/2022081413/54625fabaf7959aa3d8b6199/html5/thumbnails/18.jpg)
Entity Framework AfternoonSponsor