WPF - Criando uma aplicação XBAP com LINQ
O WPF (Windows Presentation Foundation) e o LINQ são duas novidades que se consolidaram na versão 3.5 da plataforma .NET tornando-se nativos da plataforma e oferecendo ao desenvolvedor a criação de interfaces de qualidade com código de acesso a dados mais intuitivo, robusto e amigável.
Neste artigo eu vou mostrar como podemos criar uma aplicação WPF web (XBAPs) com acesso a dados usando os recursos do LINQ usando o Visual Studio 2008 com service pack 1. Se você não tem o Visual Studio obtenha a versão trial por 90 dias aqui: http://msdn.microsoft.com/en-us/visualc/aa700831.aspx
Uma aplicação WPF é composta de páginas ou janelas XAML (eXtensible Application Markup Language) e o código gerenciado , code-behind.
O LINQ é uma nova linguagem com suporte a consulta a dados com as mais diversas fontes de origem permitindo o acesso e a obtenção de informações através de uma sintaxe enxuta e mais intuitiva.
Podemos desenvolver basicamente dois tipos de aplicações com WPF:
Existem 3 maneiras de efetuar o deploy de uma aplicação WPF:
|
Criar uma aplicação WPF para web (daqui para frente aplicação XBAP ) é muito simples. Quer ver como ???
Criando uma aplicação WPF XBAP
Abra o Visual Studio 2008 e no menu File selecione New Project;
Na janela New Project selecione o Projeto Visual Basic -> Windows e em Templates WPF Browser Application informando o nome wpf_WebApp e clique em OK;
A seguir inclua o seguinte código na janela XAML no interior da tag <Grid> </Grid>:
<
TextBlock Text="Minha primeirao aplicação XBAP." Background="Aqua" Foreground="DarkOrchid"></TextBlock>Você pode também arrastar o controle TextBlock a partir da Toolbox e na janela de propriedades , na propriedade Text informar o Texto usado: Minha primeirao aplicação XBAP;
Executando a aplicação será aberta no seu navegador padrão a seguinte janela:
Bem , não é nada muito funcional , não é mesmo !!!!
Então vamos ao que interessa , vamos criar uma aplicação WPF XBAP bem simples para começar, assim todos podem acompanhar.
Vamos criar uma aplicação WPF que usa o Navegador padrão como janela e que irá acessar o banco de dados Northwind.mdf e exibir os nomes dos produtos em um controle ListBox.
Volte a janela Solution Explorer e selecione o arquivo Page1.xaml . A seguir remova o TextBlock e inclua um controle ListBox e um controle Button conforme o leiaute abaixo:
Agora vamos incluir uma referência ao LINQ to SQL no projeto. No menu Project -> Add New Item , selecione na janela Add New Item , em Templates , LINQ to SQL Classes e informe o nome Produtos.dbml e clique em Add;
Será aberto o descritor LINQ; Abra a janela Server Explorer e selecione uma conexão com o banco de dados Northwind.mdf;
Expanda as tabelas e selecione a tabela Products e a arraste para a janela do Descritor OR/M LINQ conforme figura abaixo;
Uma
das grandes novidades na nova versão da plataforma .NET é o LINQ , e, dentre
as variações do LINQ o LINQ To SQL. Para usar o LINQ To SQL em suas
aplicações basta incluir uma referência usando o template LINQ To SQL
classes. Fazendo isso você terá acesso ao Descritor Objeto Relacional
ou Object Relational Designer (O/R Designer). O Descritor Objeto Relacional - Object Relational Designer (O/R Designer) - fornece uma interface visual para criar e editar classes LINQ to SQL , classes das entidades - entity classes- que são baseadas em objetos do banco de dados. O descritor O/R é usado para criar um modelo de objetos na aplicação que efetua o mapeamento para os objetos do banco de dados gerando um DataContext fortemente tipado que é usado para enviar e receber dados entre as classes das entidades e o banco de dados; além disso o descritor O/R também permite efetuar o mapeamento de stored procedures e funções para o métodos do DataContext com o intuito de retornar e popular as classes das entidades provendo ainda a habilidade de desenhar relacionamentos herdados entre as classes das entidades. |
Abaixo temos o Descritor O/RM exibindo a classe Product mapeada para tabela Products do banco de dados;
Agora volte para a janela Solution Explorer e selecione o arquivo Page1.xaml. Clique duas vezes no controle Button e inclua o seguinte código no evento Click:
Private Sub
btnExibirProdutos_Click(ByVal
sender As
System.Object, ByVal
e As
System.Windows.RoutedEventArgs)
Handles btnExibirProdutos.Click carregaLista() End Sub |
Neste código apenas invocamos a rotina carregaLista() quando o usuário clicar no botão de comando da página:
A seguir temos o código da rotina carregaLista();
Private
Sub carregaLista() Dim db As New ProdutosDataContext Me.ListBox1.ItemsSource = From p In db.Products.ToList Order By p.ProductName Me.ListBox1.DisplayMemberPath = "ProductName" End Sub |
No código criamos uma instância da classe DataContext para a tabela Produtos e em seguida usamos uma consulta LINQ para selecionar os nomes dos produtos e exibí-los no ListBox da página;
A
classe DataContext é uma classe LINQ to SQL que atua como uma ponte
entre o banco de dados SQL Server e as classes das entidades LINQ To SQL
mapeadas para o banco de dados. Ela contém a informação e os métodos para
efetuar a conexão com o banco de dados e manipular os dados.
Essa classe possui diversos métodos que você pode chamar , como o método SubmitChanges que envia as atualizações das classes LINQ To SQL para o banco de dados. Além disso você pode criar métodos adicionais na classe DataContext para mapear stored procedures e funções de forma que executando os métodos criados as stored procedures e as funções que foram mapeadas pela classe DataContext serão executadas. O LINQ To SQL trata as stored procedures e funções da mesma forma, sendo que ambas são mapeadas para as classes das entidades usando o mesmo StoredProcedureAttribute. Existem dois tipos distintos de métodos DataContext (que mapeiam para stored procedures e funções) que você pode criar e incluir no painel de métodos do Object Relational Designer (O/R Designer) :
|
Antes de testar a nossa aplicação devemos efetuar o seguinte ajuste na configuração da mesma. Clique duas vezes sobre My Project e na guia Security marque a opção : This is a full trust application, de forma a contornar o erro que irá ocorrer se não marcarmos esta opção;
Executando o projeto e clicando o botão de comando iremos obter:
E assim acabamos criando a nossa primeira aplicação WPF do tipo XBAP acessando dados via LINQ to SQL.
Pegue o projeto completo aqui : wpf_WebApp.zip
Continuando este artigo vamos mostrar como funciona o modelo de distribuição de uma aplicação WPF do tipo XBAP.
acompanhe a continuação neste link: WPF - Criando uma aplicação XBAP com LINQ II ...
Referências:
José Carlos Macoratti