pomeriggio entity framework - wp7 e sql compact edition
DESCRIPTION
Slides della sessione "WP7 & SQL Compact Edition" tenuta da Nicolò Carandini all'evento "Pomeriggio Entity Framework"TRANSCRIPT
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
Scenari d’uso
Applicazioni 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.
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. quindi non c’è alcuna libreria da aggiungere al progetto e di conseguenza la nostra applicazione non viene «appesantita».
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.
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.
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):
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.
O/R Mapping - Code First
Il Mapping tra il modello ad oggetti e il database relazionale si dichiara mediante attributi che decorano il codice delle classi:
O/R Mapping - Code First (part 2)
Per le relazioni si utilizza l’attributo Association:
Planner App – Class diagram
Planner App
Demo
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:
Best Practices
• Usare Skip/Take per la Data Virtualization e Large Batch Update
• Velocizzare gli aggiornamenti con unaVersion Column
• Minimizzare l’uso di memoria con INotifyPropertyChanging
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.
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 snapshot rs - Restore snapshot xd - target the emulator de - target a device
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 database locale è 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
Entity Framework Afternoon
Sponsor