Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Entity com PostGree

Victor, aqui no meu serviço estamos no inicio de um desenvolvimento de um sistema simples de vendas. Como estou aprendendo Entity no curso, pensei em fazer já utilizando o meu aprendizado. Entretanto estou esbarrando na questão de utilizar o EF com o PostGree. Nesta aula você nos disse que para utilizar com outro banco bastasse mudar no app.config. Pois bem, estou tentando de todas as formas e não consigo..Estou criando uma tabela básica de usuários, igual seu exemplo e não vai...Já alterei a ConnectionString porém não obtive sucesso.

Existe algum segredo para utilizar o ED com PostGree ? Você teria um exemplo para mim ?

2 respostas
solução!

Olá Marcelo

Utilizar o Entity Framework com qualquer banco de dados que não seja o SQL Server é mais complicado pois não existe um suporte oficial da Microsoft, nesses casos é mais recomendado utilizar o NHibernate.

Mas caso você queira realmente utilizar o PostGre com o EF, você precisa primeiro instalar o driver do Entity Framework para postgre sql. Dentro do nuget, procure e instale um pacote chamado Npgsql.EntityFramework.

Depois disso, você terá que modificar a string de conexão do projeto:

<connectionStrings>
    <add name="EntidadesContext" connectionString="Server=<endereço do banco>;Database=<nome do banco>; User Id=<usuario>;Password=<password>;" providerName="Npgsql" />
  </connectionStrings>

Depois disso, você terá que informar ao entity framework que as conexões da aplicação serão abertas pelo Npgsql, para isso, dentro do App.Config, procure a tag chamada entityFramework e dentro dela, comente as configurações do defaultConnectionFactory e depois adicione a configuração para o Npgsql:

<entityFramework>
    <!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>-->
    <defaultConnectionFactory type="Npgsql.NpgsqlFactory, Npgsql" />
    <providers>
      <!-- aqui você não precisa mudar nada -->
    </providers>
  </entityFramework>

E para teminar, você precisa registrar o driver do postgresql com o ado.net, para permitir que o Entity Framework encontre o driver. No final do app.config, mas ainda dentro da tag configuration, crie uma nova tag chamada system.data e dentro dela adicione a configuração abaixo:

<configuration>
  <!-- toda configuração que já estava no arquivo -->
  <system.data>
    <DbProviderFactories>
      <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
    </DbProviderFactories>
  </system.data>
</configuration>

Com isso o Entity Framework já consegue falar com o PostgreSQL. Essa configuração só tem um problema, as Migrações do EntityFramework não funcionarão. Suporte para migrações só será adicionado a partir da versão 2.2.0 do Npgsql.EntityFramework, então até lá você terá que criar as tabelas manualmente no banco de dados.

Entendi...como precisávamos de algo mis rápido, acabei optando por ADO.net, fazendo as operações normais do Crud (tudo na unha).

Ainda não fiz o curso de nhibernate, tentei dar uma lida rápida sobre o assunto e não entendi muito bem... Mas vou fazer o curso.....

Muito obrigado pelos ensinamentos e vou tentar fazer o que disse para eu ver funcionando EF com Postgre.