Como conectar ao PostgreSQL no Entity Framework
Neste conteúdo você aprenderá a utilizar o Entity Framework em conjunto com o banco de dados PostgreSQL. Para isso veremos quais pacotes devem ser instalados e configurações que precisam ser feitas no projeto.
O Entity Framework é um framework de Mapeamento Objeto-Relacional (ORM) capaz de trabalhar com diversos bancos de dados. Isso é possível graças à sua estrutura interna, que usa o ADO.NET, um conjunto de classes e interfaces para acesso a bancos de dados em .NET, como ilustra a Figura 1.
Para trabalhar um determinado banco o EF usa o provider adequado, que implementa as interfaces do ADO.NET, como mostra a Figura 2.
Graças a essa estrutura podemos trabalhar com diferentes SGBDs alterando basicamente o provider utilizado, pois o Entity Framework abstrai toda a complexidade da decisão sobre quais classes utilizar para cada banco.
Instalando o Entity Framework
Para trabalhar com o PostgreSQL precisamos instalar o pacote EntityFramework6.Npgsql via NuGet. Automaticamente serão instaladas duas dependências: o próprio EntityFramework e o Npgsql que é o provider do ADO.NET para PostgreSQL, como ilustra a sequência de imagens a seguir:
2º Slide: No campo de pesquisa digitamos EntityFramework6.Npgsql, assim o selecionamos e clicamos em install.
3º Slide: É exibido que a instalação foi concluida com êxito.
Configurando o acesso ao banco
Após instalar os pacotes necessários precisamos registrar no arquivo de configurações da aplicação (App.config ou Web.config) o DbProviderFactory referente ao uso do PostgreSQL. Esse é um elemento próprio da arquitetura do EF que implementa o padrão de projeto Abstract Factory e indica quais classes devem ser usadas para acesso ao banco de dados:
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider"
invariant="Npgsql"
description=".Net Data Provider for PostgreSQL"
type="Npgsql.NpgsqlFactory, Npgsql"
support="FF" />
</DbProviderFactories>
</system.data>
Por fim podemos definir a string de conexão seguindo os padrões do PostgreSQL:
<connectionStrings>
<add name="PgProdutos"
connectionString="server=localhost;Port=5432;user id=postgres;
password=abcd1234;database=DbProdutos"
providerName="Npgsql" />
</connectionStrings>
A partir daí o uso do Entity Framework é igual para todos os bancos. Ou seja, podemos usar a classes DbContext, DbSet, Data Annotations, etc. Por exemplo, o DbContext para essa aplicação deve referenciar a string de conexão:
public class ProdutosContext:DbContext
{
public ProdutosContext():base("PgProdutos")
{
}
public DbSet<Produto> Produtos { get; set; }
}
Ao ler ou escrever dados na coleção Produtos a tabela será criada no banco, caso não exista.
Sugestão de Conteúdo
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo