Npgsql: no se puede conectar Visual Studio 2015 a PostgreSQL

c# dapper postgresql visual-studio-2015

Pregunta

Soy nuevo en PostgreSQL e intento cambiar mi aplicación MVC 5 de MSSQ a PostgreSQL. Instalé satisfactoriamente PostgreSQL, creé una base de datos, un esquema y una tabla de prueba. También instalé exitosamente los paquetes NuGet EntityFramework6.Npgsql (v3.1.1) y Npgsql (v3.1.7). Comprobé que ya se habían creado mis archivos web.config y machine.config y las referencias Npgsql. Estoy usando dapper para administrar los datos.

web.config :

<add name="PgSQL_Conn" providerName="Npgsql" connectionString="server=127.0.0.1;port=5432;userid=user;password=password;database=DB_Name" />

<providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
    </providers>

<system.data>
    <DbProviderFactories>
    <remove invariant="Npgsql" />
    <add name="Npgsql Data Provider" invariant="Npgsql" description="Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" />
    <add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version= 7.6.714.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /></DbProviderFactories>
  </system.data>

machine.config :

    <system.data>
            <DbProviderFactories><add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Npgsql Data Provider" invariant="Npgsql" description=".NET Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=3.1.6.0, Culture=neutral, PublicKeyToken=5D8B90D52F46FDA7"/></DbProviderFactories>
</system.data>

Estoy usando el siguiente código para probar la conexión:

string text, query;

query = @"SELECT ""MOSB"".""GetText""() AS ""Text"";";

IDbConnection db = new Npgsql.NpgsqlConnection(ConfigurationManager.ConnectionStrings["PgSQL_Conn"].ConnectionString);
db.Open();

var result = db.Query(query);

text = result.First().Text;

Cuando depuro la aplicación, aparece el siguiente error cuando el punto de interrupción llega a db.Open ();

Se produjo una excepción del tipo 'Npgsql.PostgresException' en Npgsql.dll pero no se manejó en el código de usuario. Información adicional: El componente externo ha lanzado una excepción.

Por cierto, si trato de agregar una nueva Conexión de Datos o Servidor desde la pestaña Explorador de Servidor, no veo ningún Proveedor de PostgreSQL en la lista. Si ejecuto odbcad32.exe, aparecen dos controladores.

Realmente no sé qué más hacer.

Respuesta popular

¡Problema resuelto! El problema era que mi cuenta de usuario de Windows no podía editar el archivo machine.config . Después de que se otorgaron los privilegios, el archivo se modificó con éxito y ahora puedo conectarme con Dapper y EF.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué