sample fill linq (language integrated query) objects xml sql user data odata
TRANSCRIPT
Acesso a base de dados (local DB) no WP 7WPH401
Renato HaddadMVP, MCT, MCTS, [email protected] @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 [email protected] 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.