18
Wp7 & SQL Compact Nicolò Carandini nicolo.carandini@domusdo tnet.org blogs.ugidotnet.org/ Nick60 twitter.com/TPCWare

WP7 SQL Compact local database

Embed Size (px)

DESCRIPTION

Una itroduzione all'uso di SQL Compact com database locale per Windows Phone 7

Citation preview

Page 1: WP7 SQL Compact local database

Wp7 & SQL Compact

Nicolò [email protected]

blogs.ugidotnet.org/Nick60

twitter.com/TPCWare

Page 2: WP7 SQL Compact local database

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

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

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

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

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

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

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

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

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

Planner App – Class diagram

Page 12: WP7 SQL Compact local database

Planner App

Demo

Page 13: WP7 SQL Compact local database

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

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

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

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

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

Entity Framework AfternoonSponsor