VB .NET - Introdução ao Acesso a dados com o Entity Framework para Novatos


Este artigo introduz o Entity Framework para iniciantes. O artigo é destinado a desenvolvedores que estão usando basicamente a ADO.NET para escrever aplicações que acessam dados quer seja usando o o código diretamente no formulário quer seja escrevendo as suas camadas de acesso a dados.

Muitos desenvolvedores experientes vão achar este artigo muito básico, e ele é muito básico mesmo pois foi escrito para quem esta engatinhando, se você já esta correndo não perca seu tempo.

Neste artigo eu tento mostrar que é mais fácil para um novato começar a criar aplicações que acessam dados usando o Entity Framework que é um ORM - Object Relational Mapping ao invés de usar o caminho comum e começar usando ADO .NET.

O que tenho que saber para acessar dados usando ADO .NET ?

Você pode usar a linguagem VB .NET para fazer praticamente o que quiser em termos de programação mas se você pesquisar na internet vai acabar concordando comigo que mais da metade das aplicações feitas com o VB .NET usam um banco de dados. (Geralmente um banco de dados relacional como SQL Server, Oracle, MySQL, Access, FireBird, PostGreSQL, etc.)

Para acessar dados na plataforma .NET temos o framework ADO .NET que existem desde os primórdios da linguagem e que pode ser visto como uma evolução da tecnologia DAO (Data Access Objects) usada com a linguagem Visual Basic 3/4 que depois evoluiu para a ADO - Activex Data Object no Visual Basic 5/6.

Para os novatos o primeiro contato com a ADO .NET pode trazer uma certa confusão pois existem muitas classes, objetos e métodos; existindo também muitas vezes mais de uma maneira de realizar a mesma tarefa.

Para trabalhar com a ADO .NET você tem que saber usar as classes e os métodos para realizar cada tarefa como por exemplo:

Só para você ter uma ideia abaixo temos uma figura que mostra um resumo da arquitetura ADO .NET:

Além de conhecer ADO .NET você tem que conhecer também a linguagem SQL e seus comandos principais :

Além disso você tem que conhecer um pouco sobre banco de dados relacionais e entender que existem tabelas, campos e que existem relacionamentos entre as tabelas:

Vamos ser sinceros : É COISA PRA CARAMBA !!!

Não é a toa que um novato vai levar algum tempo até criar uma aplicação de acesso aos dados decente.

Tudo bem, mas o que é o Entity Framework e qual a sua vantagem sobre ADO .NET ?

O Entity Framework é um ORM - Object Relational Mapper - que realiza o mapeamento entre as tabelas de um banco de dados e a partir delas gera objetos e entidades.

Abaixo um esquema bem simplificado do processo de geração do modelo de entidades a partir de um banco de dados:

Dessa forma o Entity Framework gera um modelo de entidades que abstrai todo esquema do banco de dados de forma que após esse processo temos que tratar não com tabelas, relacionamentos, comandos SQL e todas as classes da ADO .NET mas com objetos que representam o modelo de dados.

Para isso temos que interagir com a camada do Entity Framework que atua entre a aplicação e os provedores ADO .NET de forma a tornar transparente para o desenvolvedor o processo de acesso e persistência de dados.

Abaixo a figura que representa arquitetura do Entity Framework :

Dessa forma podemos usar o Entity Framework para gerar objetos de negócios e entidades conforme as tabelas do banco de dados e assim termos mecanismos para:

E com isso obtermos os seguintes benefícios:

  1. Podemos ter toda a lógica de acesso de dados escritos em linguagens de alto nível (VB .NET ou C#);
  2. O modelo conceitual pode ser representado de uma forma melhor por meio de relações entre entidades;
  3. O armazenamento de dados pode ser substituído sem muito esforço desde que toda a lógica de acesso de dados está presente em um nível mais elevado;

Pondo a teoria em prática

Vamos então compreender como usar o Entity Framerwork para criar uma aplicação com acesso a dados e realizar as operações CRUD.(Create/Update/Delete)

Vou tentar provar que é muito mais fácil seguir este caminho do que usar as classes e métodos ADO .NET.

Vou criar uma aplicação Web usando o Visual Studio Express 2012 for Web a nova versão que esta disponível neste link: http://www.microsoft.com/visualstudio/eng/downloads

Abra o Visual Studio Express 2012 for Web e na janela principal clique no link New Project;

Na janela New Project selecione Visual Basic -> Web e o template ASP .NET Web Forms Application informando o nome EF_AcessoDados e clique no botão OK;

Este template criará uma solução Web Forms com uma estrutura completa que usa páginas .aspx, uma master page, arquivos de scripts css, imagens, etc.

Dessa forma já tem sua estrutura criada e vamos fazer alguns ajustes na Master page - Site.Master - e nas páginas apenas para adequá-la à nossa necessidade.

Definindo o banco de dados

Como já temos a aplicação ASP .NET criada vamos definir qual banco de dados desejamos acessar.

Podemos usar um banco de dados já existente ou criar um banco de dados novo.

Eu vou usar um banco de dados SQL Server chamado Cadastro que contém uma tabela chamada Clientes com a seguinte estrutura:

O script SQL para criar esta tabela no banco de dados Cadastro é dado a seguir:

USE [Cadastro]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Clientes](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[nome] [nvarchar](50) NULL,
	[endereco] [nvarchar](50) NULL,
	[telefone] [nvarchar](20) NULL,
	[email] [nvarchar](100) NULL,
 CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Obs:Você pode usar o SQL Server Management Studio para criar o banco de dados e a tabela ou pode fazer isso no próprio ambiente do Visual Studio.

Usando o Entity Framework - Definindo um Entity Data Model

Os Bancos de dados relacionais usam a abstração de linhas em tabelas, mas as aplicações orientadas a objetos usam a abstração de classes e objetos o que não é a mesma coisa. As ferramentas para mapeamento objeto Relacional (OR/M) tendem a contornar esta diferença mapeando as classes para as tabelas do banco de dados, mas mesmo assim existem algumas características que continuam a exigir um esforço extra após todo esta trabalho.

O objetivo da ADO .NET Entity Framework é mais ambicioso; o serviço OR/M seria apenas mais um serviço e outros serviços como relatórios, sincronização, backup, etc. também seriam oferecidos; para cobrir todos estes serviços foi criado um modelo de dados que é similar ao usado no paradigma orientado a objetos que o desenvolvedor utiliza, e também é independente de qualquer linguagem ou plataforma.

Este modelo de dados é conhecido como Entity Data Model (EDM) ou modelo de entidades de dados e pode ser considerado o coração da do Entity Framework.

O EDM é um modelo entidades - relacionamentos onde :
  • Entidades - são instâncias de tipos de entidades como Clientes, Produtos os quais estão estruturados em registros e chaves;
  • Relacionamentos - são instâncias de tipos de relacionamentos que são associações entre duas ou mais tipos de entidades;

É a partir do modelo de entidades que podemos escrever código usando as diferentes APIs , como o provedor EntityClient ou o Object Services com LINQ to Entities.

O Entity Data Model é um modelo de dados Entidade-Relacionamento cujo conceito central são as entidades e os relacionamentos, onde Entidades são instâncias de Tipos de entidades como Cliente, Produto, Categoria as quais são estruturas de registros com uma chave. Um Chave de Entidade é formada a partir de um subconjunto de propriedades do Tipo da entidade. A chave (clienteID, ProdutoID, etc) é um conceito fundamental para identificar de forma única , atualizar instâncias e permitir que as instâncias de entidades participem nos relacionamentos.

Para criar um Entity Data Model para a nossa aplicação selecione o menu Project e clique em Add New Item;

Será aberto a janela do Assistente. Selecione Visual Basic -> Data e a seguir o template ADO .NET Entity Data Model informando o nome Cadastro.edmx e clicando no botão Add;

Na próxima janela do Assistente selecione a opção - Generate from database - pois vamos gerar o modelo de entidades a partir do banco de dados Cadastro.mdf;

Clique em Next>;

Na próxima janela Clique em - New Connection - para criar uma nova conexão com o banco de dados;

A seguir informe o nome do servidor, no exemplo estou usando o SQL Server Express Local;

Depois selecione o banco de dados a conectar: Cadastro;

O assistente exibirá a conexão definida, a string de conexão criada, e o nome da entity connection que será salva no arquivo Web.Config;

Aceite essas configurações e clique no botão Next>;

A seguir seleciona a tabela Clientes , marque as opções e aceite o nome do Model;

Para concluir clique em Finish;

O modelo de entidades será gerado no arquivo Cadastro.edmx e exibido no editor onde veremos a entidade Cliente e as propriedades que representam os campos da tabela Clientes;

Temos assim o nosso Entity Data Model (EDM) criado e pronto para uso na nossa aplicação.

Na segunda parte deste artigo irei continuar o projeto ASP .NET e usar o Entity Data Model (EDM) em nossa aplicação web.

Aguarde : VB .NET - Introdução ao Acesso a dados com o Entity Framework para Novatos - II

Heb 3:1 Pelo que, santos irmãos, participantes da vocação celestial, considerai o Apóstolo e Sumo Sacerdote da nossa confissão, Jesus,

Heb 3:2 como ele foi fiel ao que o constituiu, assim como também o foi Moisés em toda a casa de Deus.

Heb 3:3 Pois ele é tido por digno de tanto maior glória do que Moisés, quanto maior honra do que a casa tem aquele que a edificou.

Heb 3:4 Porque toda casa é edificada por alguém, mas quem edificou todas as coisas é Deus.

Referências:


José Carlos Macoratti