Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Entity Framework e WPF: Crie uma aplicação CRUD aplicando o conceito multicamadas- Revista easy .net Magazine 17
O artigo explica os conceitos básicos da tecnologia Entity Framework, utilizada para realizar o acesso a dados da aplicação, aplicando o conceito de mapeamento objeto relacional. Além disso, será possível entende o uso do WPF(Windows Presentation Foundation), utilizado para a criação de interfaces ricas para Windows.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Easy .net magazine 17
Existem muitas metodologias para desenvolvimento
software. No momento que você prepara um projeto para o desenvolvimento de uma
aplicação, a primeira questão a ser analisada é a estrutura do projeto, os frameworks
e as metodologias que serão aplicadas. Uma boa prática de projeto que você pode
utilizar em suas aplicações é o N-camadas. A ideia é dividir o projeto em
várias partes, sendo que todas as partes do mesmo ficam independente uma das
outras. Utilizando esta metodologia, você tem a possibilidade de dividir a
aplicação em partes, além de permitir que as melhorias de software
(implementação de novos recursos, por exemplo), não venham a interferir em todo
projeto, melhorando a manutenção do software, possibilitando melhorar o
trabalho em equipe, onde cada desenvolvedor vai possuir uma parte especifica do projeto para
desenvolver.
A forma mais comum utilizada no
conceito N-camadas, é a de 3 camadas (3-tier), conforme mostra a Figura 1, muito utilizada em aplicações
web. Geralmente neste modelo de aplicações, existe uma camada para a
apresentação ou interface com usuário (Presentation), uma camada para a lógica
de negócio ou regras de negócio (Business) e uma camada para os dados (Data).
Este conceito é bastante difundido atualmente, sendo cada uma destas camadas alocadas
em um servidor diferente para tornarem-se independentes. Um exemplo clássico é
pensar em lojas populares, onde existem centenas de filiais e geralmente uma
única matriz. Se nessas lojas as aplicações fossem desenvolvidas utilizando o
conceito N-Camadas, não seria necessário criar uma aplicação Client e outra
Server. Neste caso, somente seria desenvolvido um único projeto, e neste,
haveria a separação de camadas, seguindo os pontos citados anteriormente.
Quando a aplicação fosse distribuída, você simplesmente iria selecionar que as
UI, seriam alocadas em máquinas Client, onde se aplicado à analogia de lojas
populares, seriam aquelas que servem para consultas de preços e realização de
pedidos. Na Matriz, poderia ser concentrado a UI, BLL (Business Logic Layer) e
DAL(Data Access Layer).
Abaixo segue uma
breve descrição de cada camada.
- UI – É a Interface com o usuário, você pode imaginar uma
aplicação em ASP.NET com os controles GridView, TextBox, Button, entre
outros. As ações de listar informações e até mesmo persistir dados ou
ainda validar regras de negocio (como CPF), não são centralizadas nesta
camada. A utilização de CSS, JavaScript deve ser aplicado nesta camada.
- DAL – Camada de acesso a dados da aplicação, a ideia é que toda
a persistência com o banco de dados seja realizado a partir desta camada.
Na prática, retorno de informações como pesquisas, inserção de registros,
atualização e exclusão são realizadas a partir desta camada.
- BLL – Responsável pelas regras de negocio da aplicação, isto é,
tudo que envolva lógica de negocio. A formatação de um CPF, baixa de
estoque, se um cliente possui débito(e com isso não pode realizar compras),
e assim como qualquer outra regra que a aplicação possua.
Utilizando este conceito de camadas, você também tem a possibilidade
de criar uma aplicação com “N” interfaces (Desktop, Mobile e Web), um tema para
um futuro artigo.
CRUD – Create, Read, Update e Delete
Esta sigla é utilizada quando você
deseja referenciar os principais métodos de acesso a dados em uma aplicação.
Os métodos CRUD estão presentes
em todas as aplicações que fazem uso de banco de dados (ao menos um deles). São
eles que permitem que as informações alimentadas pelo usuário possam ser gravadas
no banco de dados e posteriormente atualizadas, lidas e até excluídas, quando
necessário.
No .NET Framework antes da versão
3.5, os métodos CRUD eram muito utilizados com o auxilio do ADO .NET, tanto na
utilização via código, como na utilização de DataSets tipados, onde sempre era
necessário utilizar comandos SQL. Uma das grandes problemáticas deste modelo é
a deficiência que o .NET tem de gerenciar este código SQL.
Na versão 3.5 do .NET Framework, foi adicionado suporte ao LINQ (Language Integrated Query), desta forma, os desenvolvedores .NET dispõem de mais uma forma de implementação CRUD, agora utilizando uma sintaxe mais próxima a realidade orientada a objetos, com o auxílio do Entity Framework.
Entity Framework
Uma das maiores reclamações de desenvolvedores .NET,
era por algum framework que lhes auxilia-se na persistência dos dados de uma
aplicação, sem que houvesse a necessidade de trabalhar diretamente com banco de
dados, reduzindo a impedância entre a orientação a objetos e os bancos de dados
relacionais.
Com o lançamento do Entity Framework, que é o
framework da Microsoft para suprir esta necessidade, muito tem se utilizado
esta tecnologia para ajudar os desenvolvedores neste processo.
O Entity Framework permite que o desenvolvedor
não se preocupe com comandos SQL, necessário para realizar consultas na base de
dados, desta forma, permitindo que este seja visualizado de uma forma orientada
a objetos. Através do EF (Entity Framework) as tabelas do banco de dados são
representadas por classes no mundo orientado a objetos, facilitando a
compreensão e manipulação das informações.
Basicamente, o Entity Framework realiza a
leitura do banco de dados com base em uma conexão definida pelo desenvolvedor
(ou também pelo próprio usuário, através do arquivo App.Config ou Web.Config),
e transforma as tabelas deste banco de dados em classes .NET, onde suas
propriedades/atributos representam as colunas, das tabelas físicas no banco.
Esta implementação de classes é também conhecida como “Mapeamento”.
Após ter realizado o mapeamento, o
Entity Framework armazena o mesmo em três arquivos específicos, que para o
desenvolvedor são apresentados como um único arquivo com a extensão .edmx.
Neste conjunto de arquivos estão anexadas
as informações necessárias para a especificação do mapeamento. Este conjunto é
conhecido como EDM(Entity Data Model),
onde você possui as seguintes estruturas:
·
Conceptual Schema
Definition Language (CSDL); É o arquivo de
definições responsável pelas informações de entidades, relacionamentos e
funções que são utilizadas para mapear as entidades e relacionamentos com o
Data Source e o modelo conceitual.
·
Store Schema Definition
Language (SSDL): Este arquivo especifica o
modelo de gravação ou armazenamento dos dados, ou seja, na verdade são as
especificações do banco de dados que está sendo mapeado.
· "
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Fabio Rosa
Analista Programador há 3 anos, integrante da equipe de desenvolvimento da empresa Lógica Informática. Domínio em UML, SQL Server, WPF, Silverlight, Windows Forms e GeneXus. Cursando Análise e Desenvolvimento de Sistemas pela UNOPAR.
8 COMENTÁRIOS
public class ProfessorDAO : IDAO
o erro é "não são permitidas restrições em declarações não genéricas" em razão da cláusula where.
Conforme te respondi via email, creio que estão faltando apenas as tags genéricas na sua declaração (
public class ProfessorDAO
{
...
}
Att.
Teria como voce fazer um CRUD em SL+RIA Service sem Dataform?
Estou muito precisando e não acho nada.
Att
Mariel
Eu realmente não tenho muito conhecimento em RIA Service, porém pelo que pesquisei rapidamente não parce complicado. Pode-se usar o mesmo contexto criado. Só não entendi muito bem sua pergunta...você quer criar um serviço sem Dataform, ou seja um serviço que fncione como um WebService, é isso? Se não for, desculpe mas não entendi... Posso verificar para você como criar. Qualquer coisa me mande um email.
Att.



