Frage

Ich möchte an einem Projekt arbeiten, das C#.NET (auf einer Windows-Box) als Primärsprache und PostgreSQL als Backend-Datenbank (Backend auf einer Linux-Box) verwendet.Ich habe gehört, dass ODBC.NET eine einfache Integration dieser beiden Komponenten ermöglicht.

Hat jemand Erfahrung damit, C# und PostgreSQL tatsächlich so einzurichten, dass sie zusammenarbeiten?Wenn ja, haben Sie Vorschläge zur Vorgehensweise, festgestellte Probleme usw.?

War es hilfreich?

Lösung

Ich arbeite mit C# und Postgres Npgsql2 Komponente, und sie arbeiten schnell, ich empfehle Sie.

Sie können von herunterladen https://github.com/npgsql/Npgsql/releases

Notiz: Wenn Sie eine Anwendung suchen, die mit jeder Datenbank funktioniert, können Sie die verwenden DbProviderFactory Klasse und stellen Sie Ihre Abfragen mit IDbConnection, IDbBefehl, IDataReader und/oder IDbTransaction Schnittstellen.

Andere Tipps

Npgsql - .Net Provider für PostGreSQL - ist ein ausgezeichneter Treiber.Wenn Sie das traditionellere ADO.NET-Framework verwendet haben, haben Sie hier wirklich Glück.Ich habe Code, der eine Verbindung zu Oracle herstellt und fast identisch mit den PostGreSQL-Verbindungen aussieht.Einfacherer Übergang von Oracle und Wiederverwendung von Gehirnzellen.

Es unterstützt alle Standardfunktionen, die Sie beim Aufrufen von SQL ausführen möchten, unterstützt aber auch das Aufrufen Funktionen (Gespeicherte Prozeduren).Hierzu gehört auch die Rückgabe von Referenzcursor.Die Dokumentation ist gut geschrieben und bietet nützliche Beispiele, ohne philosophisch oder geheimnisvoll zu werden.Stehlen Sie den Code direkt aus der Dokumentation und er funktioniert sofort.

Francisco Figueiredo, Jr. und sein Team haben dabei großartige Arbeit geleistet.
Es ist jetzt verfügbar auf Github.
https://github.com/franciscojunior/Npgsql2

Die bessere Seite für Informationen ist:http://npgsql.projects.postgresql.org/

Lesen Sie die Dokumentation!http://npgsql.projects.postgresql.org/docs/manual/UserManual.html

Es gibt einen Linq-Anbieter für PostgreSQL unter https://www.nuget.org/packages/linq2db.PostgreSQL/.

Wir haben mehrere Anwendungen mit Visual Studio 2005 mit dem Datenanbieter Devart ado.net für PostgreSql entwickelt (http://www.devart.com/pgsqlnet/).

Einer der Vorteile dieses Anbieters besteht darin, dass er vollständige Visual Studio-Unterstützung bietet.Die neuesten Versionen enthalten alle neuen Framework-Funktionen wie Linq.

Heutzutage können die meisten Sprachen/Plattformen (Java, .NET, PHP, Perl usw.) mit fast jedem DBMS (SQL Server, Firebird, MySQL, Oracle, PostgresSQL usw.) funktionieren, sodass ich mir keine Sekunde Sorgen machen würde.Sicherlich kann es zu Pannen und kleinen Problemen kommen, aber kein echter Hingucker.

Wie von Jalcom vorgeschlagen, sollten Sie gegen eine Reihe von Schnittstellen oder zumindest eine Reihe von Basisklassen (DbConnection, DbCommand usw.) programmieren, um eine leicht anpassbare Anwendung zu erhalten.

Sie sollten nicht zu viele Probleme haben.Wie andere bereits erwähnt haben, stehen viele .Net PostgreSQL-Datenanbieter zur Verfügung.Möglicherweise sollten Sie darauf achten, dass Funktionen wie Linq wahrscheinlich nicht genutzt werden können.

Lassen Sie sich nicht von mangelnder Linq-Unterstützung aufhalten.Ein Muster, das ich verwende, besteht darin, meine Daten immer in Listen zurückzugeben und sie dann mit Linq zu löschen.Ich begann dies gewissenhaft zu tun, als ich feststellte, dass derselbe (zugegebenermaßen obskure) Linq-Ausdruck in MySQL nicht dieselben Daten zurückbrachte wie in SQL Server.

Gehen Sie einfach zu Tool -> NuGet Package Manager -> Manager Nuget Package Manager

suchen nach NpgSql Wählen Sie dann Ihr Projekt aus und klicken Sie auf „Installieren“.

Beispielcode

public void Demo()
        {
            NpgsqlConnection connection = new NpgsqlConnection();
            connection = d_connection; // your connection string
            connection.Open();              
            NpgsqlCommand cmd = new NpgsqlCommand();
            try
            {
                cmd.Connection = connection;
                cmd.CommandText = "select * from your table name";
                cmd.CommandType = System.Data.CommandType.Text;
                using (var dataReader = cmd.ExecuteReader())
                {
                    while (dataReader.Read())
                    {

                     string answer= dataReader.IsDBNull(0) ? "" : dataReader.GetString(0);

                    }
                    dataReader.Dispose();
                }
            }
            catch (Exception e)
            {
            }
            finally
            {
                cmd.Dispose();
                connection.Dispose();
            }            
        }

Verwenden Sie in PostgreSQL keine Großbuchstaben, da die Groß- und Kleinschreibung beachtet wird.

Npgsql ist ein ausgezeichneter Treiber, aber das einzige Problem, das ich bisher festgestellt habe, ist, dass der numerische Wert nicht in ein System.Decimal passt, sodass nur die Option bei jeder Abfrage oder jedem DB-Schema korrekt ist

https://github.com/npgsql/Npgsql.EntityFrameworkCore.PostgreSQL/issues/438#issuecomment -486586272

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top