Loading
PauloHDSousa - Desenvolvedor, Leitor e jogador: WPF e LINQ to Entities

sábado, 21 de janeiro de 2012

WPF e LINQ to Entities




Consulta WPF e LINQ to Entities


O Windows Presentation Foundation ou WPF, que está disponível desde o .NET Framework 3.0 se diferencia do desenvolvimento de Windows Form.

Meu objetivo nesta postagem não é ensinar como funciona o Linq to entities ou como funciona o WPF, mas sim, ensinar como ligar os dois, caso queiram saber como eles funcionam de maneira separada eu sempre coloco links para estudo no final de cada postagem.


Existe um curso de XAML oferecido pela microsoft, Vale a pena


Curso E-Learning Gratuito: Introdução a XAML


Script para a criação da tabela usada na explicação: Clique aqui para fazer o download
Projeto:Clique aqui para fazer o download

Download:ADO.NET Entity Framework 4.1

Crie um projeto WPF
Abra o Visual Studio 2010
No menu File selecione New Project ou aperte CTRL+SHIFT+N
Na janela New Project selecione Visual Basic ->  WPF Application 
Dê o nome de WPFLinqToEntities




Depois adicione um Entity Data Model, ao meu ver é uma ferramentas para mapeamento objeto Relacional (OR/M) muito mais poderosa do que a Data Classes usadas para LINQ to SQL.
Embora ambas sejam bem semelhantes, o Entity Data Model nos permite dar refresh nas tabelas caso atualizemos algo, ação que o Data Classes do LINQ to SQL não permite, quando queremos atualizar uma tabela, devemos remove-lá do mapeamento e depois adiciona-la novamente.


Escolha o Entity Data Model e coloque o nome de Comercial_Model


Escolha Generate from Database


Se conecte ao seu Database


Escolha as tabelas que deseja trabalhar, as tabelas do banco de dados serão mapeadas como classes e você terá no  Entity Data Model o conjunto de classes que representam o banco de dados.

Uma grande vantagem que o Entity Data Model tem sobre o Linq to Sql Classes é que há a possibilidade de dar Refresh nas tabelas depois que elas forem atualizadas no banco de dados.
No Linq to Sql é preciso retirar a tabela do Descritor.

Após adicionar a tabela no descritor, é possivel ver e alterar ( não recomendo ) as propriedades de cada coluna.

Quando há relacionamentos, também é mostrado.

Vá até o solution explorer  e abra o design do MainWindow.xaml
Aperte CTRL+SHIFT+D e Arraste a tabela para dentro do Grid.
Adicione também

1 Button, coloque na propriedade name o valor Btn_Pesquisar e na Content Pesquisar
1 TextBox e coloque na propriedade name o valor Text_Nome

O projeto deve ter ficado com esta aparência
Crie uma instância pública do nosso Entity Data Model

Dim oDc As New ComercialEntities

Esta instância de ComercialEntities será a responsável por fazer a conexão com o banco de dados.


Chame o evento Click do Botão Pesquisar e adicione o seguinte código

UsersDataGrid.ItemsSource = From result In oDc.Users Where result.Nome = Text_Nome.Text Select result

Aonde é UserDataGrid, substitua para o nome do seu Datagrid.
Aonde é oDc.Users, substitua para o nome da tabela que você adicionou.

Executando o Projeto teremos.


Código utilizado


O design ficou um pouco estranho, podemos alterar no XAML.
Além de alterar o Tamanho, podemos modificar a propriedade referente a visibilidade

Coluna Endereço sem edição.

<DataGridTextColumn x:Name="EndereçoColumn" Binding="{Binding Path=Endereço}" Header="Endereço" Width="SizeToHeader"  />

Adicione Visibility ="Hidden"
<DataGridTextColumn x:Name="EndereçoColumn" Binding="{Binding Path=Endereço}" Header="Endereço" Width="SizeToHeader" Visibility="Hidden" />

Faça isso para todas as colunas que não quer mostrar.

Se achar necessário, altere a propriede Width das colunas.




Links úteis