2016-08-12 2 views
0

Ich bin neu in PostgreSQL und versuche, meine MVC 5 App von MSSQ zu PostgreSQL zu ändern. Ich habe PostgreSQL erfolgreich installiert, eine Datenbank, ein Schema und eine Testtabelle erstellt. Ich habe auch die NuGet-Pakete EntityFramework6.Npgsql (v3.1.1) und Npgsql (v3.1.7) erfolgreich installiert. Ich verifizierte meine web.config und machine.config Dateien und Npgsql Referenzen wurden bereits erstellt. Ich verwende Dapper, um die Daten zu verwalten.Npgsql: Verbindung von Visual Studio 2015 zu PostgreSQL nicht möglich

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> 

Ich bin mit dem folgenden Code die Verbindung zu testen:

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; 

Wenn Ich debugge die Anwendung, Der folgende Fehler wird angezeigt, wenn der Haltepunkt db.Open() erreicht;

Eine Ausnahme vom Typ ‚Npgsql.PostgresException‘ aufgetreten in Npgsql.dll wurde aber in Benutzercode Zusätzliche Informationen nicht behandelt: Externe Komponente eine Ausnahme ausgelöst hat.

BTW, wenn ich versuche, eine neue Datenverbindung oder einen neuen Server vom Server Explorer hinzuzufügen, sehe ich keinen PostgreSQL Provider in der Liste. Wenn ich odbcad32.exe ausführen, erscheinen zwei Treiber.

Ich weiß wirklich nicht, was ich sonst tun soll.

+0

Wenn Sie Dapper verwenden, für was ist Entity Framework? – Ben

+0

Welche Zeile gibt Ihnen den Fehler? und warum so viele doppelte Anführungszeichen '' 'in dieser Abfrage? –

+0

btw Ich habe gerade die npgsql gestern gerade nach dem Tutorial kein Problem, aber ich benutze nur EF –

Antwort

0

Problem gelöst! Das Problem war, dass mein Windows-Benutzerkonto machine.config Datei nicht bearbeiten konnte. Nachdem die Privilegien gewährt wurden, wurde die Datei erfolgreich modifiziert und ich kann mich jetzt mit Dapper und EF verbinden.

Verwandte Themen