pomeriggio entity framework - wp7 e sql compact edition

18
Wp7 & SQL Compact Nicolò Carandini [email protected] blogs.ugidotnet.org/Nick60 twitter.com/TPCWare

Upload: domusdotnet

Post on 24-May-2015

800 views

Category:

Technology


5 download

DESCRIPTION

Slides della sessione "WP7 & SQL Compact Edition" tenuta da Nicolò Carandini all'evento "Pomeriggio Entity Framework"

TRANSCRIPT

Page 1: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

Wp7 & SQL Compact

Nicolò Carandini [email protected]

blogs.ugidotnet.org/Nick60

twitter.com/TPCWare

Page 2: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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.

Page 4: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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».

Page 5: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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:

Page 10: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

O/R Mapping - Code First (part 2)

Per le relazioni si utilizza l’attributo Association:

Page 11: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

Planner App – Class diagram

Page 12: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

Planner App

Demo

Page 13: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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:

Page 14: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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

Page 15: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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

Page 17: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

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

Page 18: Pomeriggio Entity Framework - WP7 e SQL Compact Edition

Entity Framework Afternoon

Sponsor