Neste artigo será apresentado a integração do Entity Framework com o sistema gerenciador de banco de dados PostgreSQL através da utilização de um componente simples e assim como o banco de dados, freeware, permitindo todo o poder disponibilizado por este framework O/RM, na modelagem específica Code First.
Como estamos em uma nova revolução de aplicativos, o conceito mais difundido por profissionais de TI é a definição de uma boa aplicação. Dentre as inúmeras características que são apresentadas quando esta questão é levantada existe uma que principalmente aos olhos do cliente não pode ser ignorada em um projeto de uma aplicação.
Esta característica é o valor do investimento do projeto. Sabemos hoje que este valor é resultante de uma série de fatores durante o projeto de uma aplicação, e que para o cliente ele não se limita ao valor cobrado pela licença ou instalação e manutenção de uma aplicação, mas também pelo investimento necessário na preparação do ambiente correto para que esta aplicação possa ser utilizada.
Um dos pontos importantes deste sistema, é a definição de como os dados serão armazenados, já que atualmente é raro encontrarmos alguma aplicação que não necessite armazenar algum dado para uma pesquisa futura ou para apoio em tomadas de decisões, sejam elas operacionais ou estratégicas.
Falando mais em aplicações LOB (BOX 1), onde o volume de dados movimentados em uma aplicação pode ser muito expressivo, precisamos ter um Sistema de Gerenciamento de Banco de Dados (SGBD) para que os dados incluídos e processados na aplicação estejam guardados com o mínimo de segurança e de uma forma muito bem controlada e com performance aceitável em grandes organizações.
Existem muitos SGBDs disponíveis no mercado, sendo alguns pagos, alguns pagos após um determinado volume de dados e outros totalmente grátis. Este fator de valores destes sistemas, não determina a qualidade dos mesmos, pois existem sistemas gerenciadores de banco de dados gratuitos muito bons e que se equivalem totalmente aos sistemas pagos mas tradicionais.
Um bom exemplo é o sistema de gerenciamento de banco de dados PostgreSQL, o qual será o objeto deste artigo.
Aplicações LOB (Line Of Business) são sistemas desenvolvidos com o objetivo principal na gestão e organização de empresas das mais diversas características e segmentos, e que são vitais para o bom funcionamento destas.
Na grande maioria dos casos, uma aplicação LOB é específica ao seu segmento, ou seja, possui uma área de atuação e é nesta que concentra todas as suas funcionalidades para atender as empresas deste mesmo ramo de atividade.
Uma aplicação LOB não tem como objetivo atingir consumidores individuais, e sim atingir organizações que estão delimitadas aos serviços e processos tratados pela mesma.
Geralmente estas aplicações possuem integrações com outras aplicações LOB especializadas em outra parte de segmento que também seja uma necessidade da empresa que o está utilizando, porém que não seja a especialidade ou o foco da aplicação.
Uma característica de uma aplicação LOB é a forma de armazenamento dos dados por ela tratados, que em sua grande maioria são armazenados em SGBDs devido a grande necessidade de avaliação e recuperação destes dados e também pela questão da segurança dos mesmos.
O SGBD PostgreSQL
O PostgreSQL está atualmente na sua versão 9.3 e está sendo muito utilizado como ferramenta de armazenamento de dados em várias aplicações mundo afora. É um sistema de fácil utilização, seguro e robusto, assim como seus concorrentes pagos como o Oracle e o Microsoft SQL Server.
Apenas para citar como exemplo, no Brasil, um grande repositório de dados utilizado com PostgreSQL é o banco de dados da Caixa Econômica Federal, que possui mais de 1TB de informação armazenada, portanto podemos ao menos pensar que se ele está sendo utilizado por um banco e com este volume de dados, é por que o mesmo está preparado para isto.
De outro lado, hoje possuímos várias linguagens de programação para todos os gostos dos profissionais de TI, mas assim como nos SGDB algumas linguagens de programação ganham maior destaque, seja pelas facilidades de uso, ou pelo sua integração com vários serviços ou então pelo volume de aplicações disponíveis no mercado desenvolvidas com estas linguagens.
Umas das linguagens que se destacam são as linguagens disponibilizadas pelo .NET Framework, como C# e VB .NET.
Como o .NET Framework é desenvolvido e mantido pela Microsoft, nada mais natural que o SGBD indicado para a utilização com estas linguagens seja o Microsoft SQL Server, que atualmente está na versão 2014, o qual disponibiliza a utilização grátis da sua versão Express do mesmo até atingir o volume de dados de 10 GB, que para muitas aplicações já é o suficiente, porém para outras, como no caso da Caixa Econômica Federal não chega nem perto da necessidade.
Quando o volume de dados é maior que 10 GB, é necessário comprar uma licença da versão completa do Microsoft SQL Server.
Sendo o SQL Server nativo do .NET Framework obviamente a sua utilização é mais simplificada com as linguagens deste framework, porém, isto não significa que não seja possível a utilização de outros SGBDs de uma forma muito simples e funcional.
Atualmente, para o acesso a dados pelas linguagens do .NET Framework, existe um framework O/RM disponibilizado pela Microsoft, chamado de Entity Framework (EF), o qual é também gratuito e atualmente está na versão 6.1 e fornece diversas facilidades de utilização de acesso a dados aos desenvolvedores.
O Entity Framework é direcionado inicialmente para a utilização com o SGBD SQL Server, pois é do mesmo fabricante. Porém, ele possui como um dos seus objetivos a utilização com qualquer SGBD, necessitando apenas da implementação de um Data Provider para cada SGBD que se deseje acessar.
Nota: Ferramentas OR/M são ferramentas de mapeamento objeto-relacional. Estas ferramentas têm o objetivo de estreitar os laços entre aplicações e gerenciadores de banco de dados, para que o desenvolvedor tenha mais liberdade, segurança e praticidade para acesso a dados.
Dentre estas ferramentas, temos o Entity Framework, que é uma ferramenta OR/M destinada à utilização em .NET.
Ferramentas OR/M facilitam a integração entre a orientação a objetos e a camada de dados, diminuindo o que chamamos de impedância, que é o espaço vazio que existe entre estes modelos. Elas surgiram após a necessidade desta comunicação, e a melhor utilização do paradigma orientado a objetos.
Hoje são consideradas uma camada muito importante do desenvolvimento de aplicações e ganharam bastante ênfase nos últimos anos, com o surgimento de diversas ferramentas OR/M, tanto open source / free como ferramentas pagas.
Npgsql como Data Provider
Tendo como objetivo deste artigo, conectar uma aplicação .NET com o SGBD PostgreSQL, temos a necessidade de utilização de um Data Provider (BOX 2) não nativo do .NET Framework. Para esta conexão existem diversos Data Providers disponíveis na web, sendo a grande maioria, pagos.
Porém um Data Provider que eu gosto muito de utilizar e que na minha visão é de muito boa qualidade e também é freeware é o Npgsql. Este Data Provider foi desenvolvido e mantido por um grupo de desenvolvedores .NET que sentiram a necessidade de possuir uma forma de conexão da plataforma .NET e do SGBD PostgreSQL. Atualmente ele está na versão 2.1.1 (no momento do desenvolvimento deste artigo) e foi desenvolvido totalmente com o .NET Framework na linguagem C#.
Além de ser freeware ele também é um componente Open Source, onde podemos baixar os arquivos do projeto e modificarmos conforme alguma necessidade específica que podemos ter. Uma curiosidade sobre o Npgsql é que compondo o grupo de desenvolvedores do projeto, existe um brasileiro, o Sr. Francisco Figueiredo Jr.
O componente Npgsql permite a conexão com o SGDB PostgreSQL a partir da versão 7 deste SGBD. Ele é utilizado também
em outros projetos Open Source como o NHibernate, que é uma alternativa ao Entity Framework, e também faz parte ...