sample fill linq (language integrated query) objects xml sql user data odata

Post on 21-Apr-2015

119 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Acesso a base de dados (local DB) no WP 7WPH401

Renato HaddadMVP, MCT, MCTS, MCPDrehaddad@msn.com @rehaddadwww.renatohaddad.comhttp://weblogs.asp.net/renatohaddad

Agenda

Visão GeralAcesso a dados no Windows PhoneDesenvolvimento Code-first

ImplementaçãoConsultasInserts, updates, deletesDatabase schema upgrades

Performance e melhores práticas

Opções de Armazenamento

LINQ para tudo

LINQ (Language Integrated Query)

Objects XML SQLUser Data

OData

Local Data Storage: Visão GeralApps gravam dados no Isolated Storage

Configurações e propriedades no dicionário da appDados sem estrutura => arquivos no Isolated StorageDados estruturados => banco de dados

Configurações da App

AppCria/gerencia arquivos

e configurações

Aplicação

App Data Folder

Package Manager

App Root Folder

WP7 Isolated Storage APIs

Install

DB

Database

DatabaseCria folder raíz da AppDB

Banco de DadosGerar via classe ou via ferramenta SQL

CMD DOSCria .cs

Contexto e Classes

.SDF

SqlMetal

C:\TempDB

// Define o data contextpublic partial class TechEdDataContext : DataContext {

public Table<Palestra> Palestras;public Table<Palestrante> Palestrantes;public TechEdDataContext(string connection) : base(connection) { }

}

// Define as tabelas do banco[Table]public class Palestra {

[Column(IsPrimaryKey=true]public string ID { get; set; }[Column]public string NomePalestra { get; set; }……

}

// Cria o banco de dados no context usando a string de conexãoDataContext db = new TechEdDataContext("isostore:/techedDB.sdf");if (!db.DatabaseExists()) db.CreateDatabase();

Desenvolvimento Code First

SqlMetal para gerar a classe

sqlmetal c:\temp\TechEd2011.sdf /code:"c:\temp\TechEd2011DataClasses.cs" /language:csharp /namespace:TechEd2011 /context:TechEd2011DataContext /pluralize

Objects, Objects, Objects…

Design time

Cria objeto: palestra, ouvintes, sorteios, etc.Decora objetos com atributos para persistência

Run time

Cria referência DataContext para o banco de dados

Traduz o modelo de objeto para arquivo DB

Submete CRUD para persitir no banco

Database upgrade

Cria novos objetos com novas necessidades

Usa APIs para atualizar a estrutura do banco

Table 1 Table 2

Table 3 Table 4

Wines

PK WineID

Name Description RetailPriceFK2 VarietalIDFK1 VineyardID

Vineyards

PK VineyardID

Name Latitude Longitude Country

Varietals

PK VarietalID

Name

Winemaker

PK WinemakerID

FirstName LastName

Consultas// Cria o banco no data contextDataContext db = new WineDataContext("isostore:/TechEdDB.sdf");

// Mostra todas as palestras que contém o texto WPH no campo NomePalestra, ordenados por Datavar q = from p in db.Palestras

where p.NomePalestra.Contains(“WPH” orderby p.Data select p;

DB

DataContext

Inserts/Updates/Deletes (CRUD)Tudo no DataContext

Realiza CRUD no DataContextPersiste o contexto ao chamar SubmitChanges()

SubmitChangesLINQ to SQL determina as operações de CRUD e submete ao DB

Objeto1 Dado1

Objeto2 Dado2

Objeto3 Dado3

Código da app

Campo1 Dado1

Campo2 Dado2

Campo3 Dado3

Inserts/Updates/Deletes

Palestra p = new Palestra{

ID = “WPH401",Nome = “Windows Phone Local Database",Descricao = “Venha conhecer como usar DB no WP"

};

db.Palestras.InsertOnSubmit(p);

db.SubmitChanges();

Palestra atual = (from p in db.Palestras where p.ID == “WPH401" select p).First();

p.Descricao = “Uso de DB no WP7";

db.SubmitChanges();

Insert Update

Inserts/Updates/DeletesDelete

var excluir = from p in db.Palestraswhere p.Codigo.StartsWith(“WP”)select p;

db.Palestras.DeleteAllOnSubmit(excluir); db.SubmitChanges();

Atenção as Foreign keys relacionadas em outras entidades

Database Schema UpgradesDatabaseSchemaUpdater permite atualizar o DB existenteSuporta adicionar

TabelasColunasIndicesAssociação/foreign keys

DatabaseSchemaVersion disponível para rastrear atualizaçõesSchemas são transacioanais

Database Schema UpgradesTechEdDataContext dc = new TechEdDataContext(App.connDB);

DatabaseSchemaUpdater dsu=dc.CreateDatabaseSchemaUpdater();

if (dsu.DatabaseSchemaVersion == 1){

dsu.AddColumn<Palestra>(“Qtde");dsu.DatabaseSchemaVersion = 2;

dsu.Execute();}         

Conteúdo RelacionadoVídeo aulas no MSDN Brasilhttp://msdn.microsoft.com/pt-br/windowsphone

Página do produtohttp://www.microsoft.com/windowsmobile/pt-br/default.mspx

Documentação http://msdn.microsoft.com/library/ff402535(VS.92).aspx

Renato Haddad rehaddad@msn.com Treinamentos para times de desenvolvimento

Palestras RelacionadasResource 1

Resource 2

Resource 3

Resource 4

Recursos

Recursos para Desenvolvedores

http://msdn.microsoft.com/pt-br

Getthefreemobileappforyourphone

http://gettag.mobi

Não esqueça de preencher sua

avaliação onlinewww.teched.com.br/

avaliacao

Getthefreemobileappforyourphone

http://gettag.mobi

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

top related