SlideShare a Scribd company logo
Wp7 & SQL Compact

      Nicolò Carandini
      nicolo.carandini@domusdotnet.org
      blogs.ugidotnet.org/Nick60
      twitter.com/TPCWare
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:
                                                    ts   -   Take snapshot
                                                    rs   -   Restore snapshot
                                                    xd   -   target the emulator
                                                    de   -   target a device



   • SQL Server Compact Toolbox (di Erik Ejlskov Jensen)
        Visual Studio add-in scaricabile dalla Visual Studio Gallery:



        ErikEJ
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

More Related Content

Viewers also liked

Tubia method music therapy13pp
Tubia method music therapy13ppTubia method music therapy13pp
Tubia method music therapy13pp
Tubiamethod
 
ALM@Work - Unit testing in Visual studio 2012
ALM@Work - Unit testing in Visual studio 2012ALM@Work - Unit testing in Visual studio 2012
ALM@Work - Unit testing in Visual studio 2012
DomusDotNet
 
Nationalites vargas guash
Nationalites vargas guashNationalites vargas guash
Nationalites vargas guash
ineserra
 
Defensa individual en el baloncesto
Defensa individual en el baloncestoDefensa individual en el baloncesto
Defensa individual en el baloncesto
310702T
 
Estadística básica
Estadística básicaEstadística básica
Estadística básica
alexromero
 

Viewers also liked (20)

Tubia method music therapy13pp
Tubia method music therapy13ppTubia method music therapy13pp
Tubia method music therapy13pp
 
ALM@Work - Team collaboration with visual studio alm 2012
ALM@Work - Team collaboration with visual studio alm 2012ALM@Work - Team collaboration with visual studio alm 2012
ALM@Work - Team collaboration with visual studio alm 2012
 
ALM@Work - Unit testing in Visual studio 2012
ALM@Work - Unit testing in Visual studio 2012ALM@Work - Unit testing in Visual studio 2012
ALM@Work - Unit testing in Visual studio 2012
 
Application lifecycle management ... e quindi
Application lifecycle management ... e quindiApplication lifecycle management ... e quindi
Application lifecycle management ... e quindi
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
 
FundEO Ávila 2012
FundEO Ávila 2012FundEO Ávila 2012
FundEO Ávila 2012
 
Utu
UtuUtu
Utu
 
Camino hacia el_futuro_evidencias
Camino hacia el_futuro_evidenciasCamino hacia el_futuro_evidencias
Camino hacia el_futuro_evidencias
 
Lista Productos Botello..
Lista Productos Botello..Lista Productos Botello..
Lista Productos Botello..
 
1 3
1 31 3
1 3
 
Ven a vivir al barrio
Ven a vivir al barrioVen a vivir al barrio
Ven a vivir al barrio
 
Nationalites vargas guash
Nationalites vargas guashNationalites vargas guash
Nationalites vargas guash
 
Proses Kadin
Proses KadinProses Kadin
Proses Kadin
 
Css3弹性布局
Css3弹性布局Css3弹性布局
Css3弹性布局
 
President Nelson Mandela
President Nelson MandelaPresident Nelson Mandela
President Nelson Mandela
 
Pobresa 1
Pobresa 1Pobresa 1
Pobresa 1
 
Determinantes de la adopción de la normas internacionales
Determinantes de la adopción de la normas internacionalesDeterminantes de la adopción de la normas internacionales
Determinantes de la adopción de la normas internacionales
 
Defensa individual en el baloncesto
Defensa individual en el baloncestoDefensa individual en el baloncesto
Defensa individual en el baloncesto
 
Exposicioninformatica ii
Exposicioninformatica iiExposicioninformatica ii
Exposicioninformatica ii
 
Estadística básica
Estadística básicaEstadística básica
Estadística básica
 

Similar to Pomeriggio Entity Framework - WP7 e SQL Compact Edition

Wp storage (online) - tiziano cacioppolini
Wp   storage (online) - tiziano cacioppoliniWp   storage (online) - tiziano cacioppolini
Wp storage (online) - tiziano cacioppolini
mokapp
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
Sanne Grinovero
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
DotNetCampus
 
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Andrea Mauro
 

Similar to Pomeriggio Entity Framework - WP7 e SQL Compact Edition (20)

Accesso ai Dati in Windows Phone: Isolated Storage, Database e Data Sharing
Accesso ai Dati in Windows Phone: Isolated Storage, Database e Data SharingAccesso ai Dati in Windows Phone: Isolated Storage, Database e Data Sharing
Accesso ai Dati in Windows Phone: Isolated Storage, Database e Data Sharing
 
Wp storage (online) - tiziano cacioppolini
Wp   storage (online) - tiziano cacioppoliniWp   storage (online) - tiziano cacioppolini
Wp storage (online) - tiziano cacioppolini
 
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioning
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss Cloud
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
 
Symantec Backup Exec System Recovery 2010
Symantec Backup Exec System Recovery 2010Symantec Backup Exec System Recovery 2010
Symantec Backup Exec System Recovery 2010
 
Il cielo è sempre più azure
Il cielo è sempre più azureIl cielo è sempre più azure
Il cielo è sempre più azure
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
 
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
 
VMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terra
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Symantec Backup Exec 12.5 Small Business Server Premium And Standard Editions
Symantec Backup Exec 12.5 Small Business Server Premium And Standard EditionsSymantec Backup Exec 12.5 Small Business Server Premium And Standard Editions
Symantec Backup Exec 12.5 Small Business Server Premium And Standard Editions
 
ORM Java - Hibernate
ORM Java - HibernateORM Java - Hibernate
ORM Java - Hibernate
 
Azure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET FrameworkAzure Mobile Services con il .NET Framework
Azure Mobile Services con il .NET Framework
 
Microservices
MicroservicesMicroservices
Microservices
 

More from DomusDotNet

More from DomusDotNet (10)

Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013Unit testing in Visual Studio 2013
Unit testing in Visual Studio 2013
 
Advanced ef code first 5.0 - EF@work
Advanced ef code first 5.0 - EF@workAdvanced ef code first 5.0 - EF@work
Advanced ef code first 5.0 - EF@work
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background Agent
 
Sviluppare per Intel® Ultrabook™
Sviluppare per Intel® Ultrabook™Sviluppare per Intel® Ultrabook™
Sviluppare per Intel® Ultrabook™
 
ALM@Work - Continuous delivery 101
ALM@Work - Continuous delivery 101ALM@Work - Continuous delivery 101
ALM@Work - Continuous delivery 101
 
We Want Web - Web Applications con MVC 3
We Want Web - Web Applications con MVC 3We Want Web - Web Applications con MVC 3
We Want Web - Web Applications con MVC 3
 
WeWantWeb - WCF Data Services
WeWantWeb - WCF Data ServicesWeWantWeb - WCF Data Services
WeWantWeb - WCF Data Services
 
ALM Revolutions - What's new in visual studio ALM 11
ALM Revolutions - What's new in visual studio ALM 11ALM Revolutions - What's new in visual studio ALM 11
ALM Revolutions - What's new in visual studio ALM 11
 
Pomeriggio Entity Framework - Database First
Pomeriggio Entity Framework - Database FirstPomeriggio Entity Framework - Database First
Pomeriggio Entity Framework - Database First
 
Pomeriggio Entity Framework - Code First
Pomeriggio Entity Framework - Code FirstPomeriggio Entity Framework - Code First
Pomeriggio Entity Framework - Code First
 

Pomeriggio Entity Framework - WP7 e SQL Compact Edition

  • 1. Wp7 & SQL Compact Nicolò Carandini nicolo.carandini@domusdotnet.org blogs.ugidotnet.org/Nick60 twitter.com/TPCWare
  • 2. 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
  • 3. 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.
  • 4. 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».
  • 5. 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.
  • 6. 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.
  • 7. 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):
  • 8. 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.
  • 9. 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:
  • 10. O/R Mapping - Code First (part 2) Per le relazioni si utilizza l’attributo Association:
  • 11. Planner App – Class diagram
  • 12. Planner App Demo
  • 13. 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:
  • 14. 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
  • 15. 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.
  • 16. Tools • ISETool.exe Command line tool per copiare dall’Isolated Storage al File System del PC e viceversa: ts - Take snapshot rs - Restore snapshot xd - target the emulator de - target a device • SQL Server Compact Toolbox (di Erik Ejlskov Jensen) Visual Studio add-in scaricabile dalla Visual Studio Gallery: ErikEJ
  • 17. 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