Entity Framework 6 - Acessando o PostgreSQL - I (VB .NET)
Neste artigo vamos acessar um banco de dados PostgreSQL usando os recursos do Entity Framework 6 usando a linguagem VB .NET. |
Já estamos na versão 6.1 do Entity Framework e muita coisa evoluiu desde a sua primeira versão.
O Entity Framework é uma ferramenta OR/M que realiza o mapeamento objeto relacional gerando entidades e mapeando-as para as tabelas do banco de dados. |
Para você se situar, na tabela a seguir temos uma apresentação de cada versão do EF e seus principais recursos:
Versão | Principais Recursos |
---|---|
EF 3.5 | Suporte a O/RM básico com a abordagem Database First. |
EF 4.0 | Suporte a POCO, Lazy loading, melhoria na testabilidade, geração de código customizada e a abordagem Model First. |
EF 4.1 | Disponibilizado também via pacote NuGet, API DBContext Simplificada ao invés de ObjectContext, abordagem Code First. (Correção de bugs com a versão EF 4.1.1) |
EF 4.3 | Recurso Code First Migrations que permite que um banco de dados criado via Code First ser gradativamente alterado conforme o modelo Code First evoluir. Liberação da versão EF 4.3.1 para correção de bugs do EF 4.3. |
EF 5.0 | Anunciado EF como Open Source. Apoio a Enum Introduzido, funções com valor de tabela, tipos de dados espaciais, vários diagramas por modelo, coloração de formas na superfície de projeto e importação de lote de procedimentos armazenados, EF Power Tools e várias melhorias de desempenho. |
EF 6.0/6.1 | Inclui muitos novos recursos relacionadas ao Code-First e ao descritor EF como consulta e persistência assíncrona, resilência da resolução de dependências, etc |
Mas não se assuste, o Entity Framework 6.0 é uma evolução, e tudo o que você já aprendeu e já conhece sobre o Entity Framework não esta perdido pois ele permanece o mesmo não havendo uma mudança radical no seu funcionamento mas apenas em alguns recursos.
Veja o site oficial do Entity Framework no Nuget : http://www.nuget.org/packages/EntityFramework
Recursos usados
Objetivos
Aprendizado
Criando o projeto no VS 2013
Abra o Visual Studio 2013 Express for Windows desktop e clique em New Project;
Selecione o template Visual Basic -> Windows Forms Application e informe o nome EF6_CursoBasico e clique no botão OK;
Vamos criar nosso modelo de entidades usando classes POCO. Nosso modelo de entidades irá conter as classes Artista e Album.
No menu PROJECT -> Add Class;
Informe o nome Album.vb e a seguir digite o código abaixo neste arquivo:
Public Class Album
Public Property AlbumId As Integer
Public Property Titulo As String
Public Property ArtistaId As Integer
Public Property Artista As Artista
End Class
|
No menu PROJECT -> Add Class;
Informe o nome Artista.vb e a seguir digite o código abaixo neste arquivo:
Public Class Artista
Public Property ArtistaId As Integer
Public Property Nome As String
Sub New()
Albuns = New List(Of Album)
End Sub
Public Overridable Property Albuns() As ICollection(Of Album)
End Class
|
Observe que a entidade Artista possui uma associação com multiplicidade um-para-muitos com a entidade Album.
Antes de prosseguirmos e criar a nossa classe de Contexto vamos incluir no projeto referências ao Entity Framework e ao provider Npgsql usado com o PostgreSQL
Na janela Solution Explorer clique com o botão direito do mouse sobre o projeto EF6_PostgreSQL e a seguir clique em Manage Nuget Packages.
A seguir clique na guia Online e na caixa de pesquisa digite EntityFramework;
Localize o pacote para o EntityFramework e clique no botão Install, confirmando e aceitando a instalação;
Repita o procedimento acima desta vez para o pacote referente ao provedor Npgsql conforme mostrado abaixo:
Após instalar o provider Npgsql vamos registrar o mesmo no arquivo app.Config incluindo o seguinte trecho de código neste arquivo:
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider"
invariant="Npgsql"
description="Data Provider for PostgreSQL"
type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
|
Agora já podemos criar a nossa classe de contexto.
No menu PROJECT -> Add Class;
Informe o nome ArteContexto.vb e a seguir digite o código abaixo neste arquivo:
Imports System.Data.Entity
Imports System.Data.Entity.ModelConfiguration.Conventions
Public Class ArteContexto
Inherits DbContext
Public Property Artistas() As DbSet(Of Artista)
Public Property Albuns() As DbSet(Of Album)
Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
' Mapeamento para as tabelas do banco de dados
modelBuilder.Entity(Of Artista)().ToTable("Artista", "public")
modelBuilder.Entity(Of Album)().ToTable("Album", "public")
' O banco de dados Macoratti PostgreSQL não auto-incrementa os Ids
modelBuilder.Conventions.Remove(Of StoreGeneratedIdentityKeyConvention)()
End Sub
End Class
|
Infelizmente o provider Npgsql não permite a criação de banco de dados e por isso não poderemos usar os recursos do Code-First e vamos ter que criar o banco de dados e as tabelas usando o pgAdmin III 1.18.1.
Criando o banco de dados e as tabelas no PostgreSQL usando o pgAdmin III
Para criar o banco de dados e as tabelas vamos usar o pgAdmin III. Para isso você tem que estar com o banco de dados PostGreSQL instalado.
Saiba que o PostGreSQL é um banco de dados totalmente gratuito e com uma boa documentação e desempenho e que pode ser considerado para ser usado em aplicações comerciais. A versão que eu vou usar neste artigo é a versão PostGreSQL 9.3.
Vamos precisar de uma ferramenta para administrar o PostGreSQL e eu vou usar o pgAdmin III que já é instalada quando você instalada o PostGreSQL. A versão que temos instalada do pgAdmin III é a 1.18.1.
O processo de instalação é simples bastando seguir o roteiro padrão e informar a senha para o usuário do banco de dados.
Eu não vou entrar em detalhes sobre como criar o banco de dados e as tabelas no PostGreSQL para saber mais consulte o artigo: C# - PostGreSQL - CRUD Básico - I
Após executar e se locar no pgAdmin III você verá seguinte janela :
Em objeto browser temos os seguintes itens:
Se você clicar em (+) da opção Databases verá que já existe um banco de dados definido como Postgresql que foi criado automaticamente na instalação. Esse banco de dados não será utilizado e não pode ser excluído por se tratar de um banco utilizado para administração do Postgresql.
Vamos criar nosso banco de dados. Clique com o botão direito do rato em cima de Databases e escolha a opção New Database:
Na janela New DataBase informe o nome do banco de dados - Macoratti e define o Owner como sendo o usuário postgres:
Os objetos do nosso banco de dados podem ser vistos clicando em (+) Schemas e a seguir em public;
Veremos uma lista contendo objetos do banco de dados :
Dentre esses objetos vamos descrever resumidamente os mais usados:
Note que já temos as tabelas Album e Artista criadas no banco de dados. Uma forma mais fácil e direta de criar uma tabela é usar o Editor SQL, inserir o comando SQL para criar a tabela e executar o script. A seguir temos os scripts usados para crias as tabelas no editor SQL:
1- tabela Album
|
2- tabela Artista
Também podemos usar o Editor SQL do pgAdmin para incluir dados nas tabelas Artista e Album:
a- Comando SQL para incluir dados na tabela Artista
INSERT INTO
"Artista" ("ArtistaId", "Name") VALUES (1, N'AC/DC'); |
b- Comando SQL para incluir dados na tabela Album
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (1, N'For Those About To Rock We Salute You', 1);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (2, N'Balls to the Wall', 2);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (3, N'Restless and Wild', 2);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (4, N'Let There Be Rock', 1);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (5, N'Big Ones', 3);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (6, N'Jagged Little Pill', 4);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (7, N'Facelift', 5);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (8, N'Warner 25 Anos', 6);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (9, N'Plays Metallica By Four Cellos', 7);
INSERT INTO "Album" ("AlbumId", "Titulo", "ArtistaId") VALUES (10, N'Audioslave', 8);
...
|
Após criar o banco de dados e as tabelas vamos salvar a string de conexão com o banco de dados no arquivo App.Config incluindo o código abaixo neste arquivo:
<connectionStrings>
<add name="ArteContexto"
connectionString="Server=localhost;Database=Macoratti;User Id=postgres;Password=******;"
providerName="Npgsql" />
</connectionStrings>
|
Concluímos essa etapa onde já definimos as classes POCO que irão gerar as nossas entidades, o banco de dados Macoratti e as tabelas Artista e Album.
Na próxima parte do artigo vamos retornar ao formulário form1.vb do projeto para definirmos a interface com o usuário e realizarmos as operações com as entidades e o banco de dados usando o LINQ e o Entity Framework.
João 3:13 Ora, ninguém subiu ao céu, senão o que desceu do céu, o Filho do homem.
João 3:14 E como Moisés levantou a serpente no deserto, assim importa que o Filho do homem seja levantado;
João 3:15 para que todo aquele que nele crê tenha a vida eterna.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: