Question

Je suis à la recherche de travailler sur un projet qui utilise C#.NET (assis sur une zone de windows) comme langue principale et PostgreSQL comme base de données principale (backend est assis sur une machine linux).J'ai entendu dire que ODBC.NET permet l'intégration facile de ces deux composants.

Quelqu'un a eu l'expérience de l'établissement C# et PostgreSQL à travailler ensemble?Si oui, avez-vous des suggestions sur la façon d'aller à ce sujet, des questions vous avez trouvé, etc.?

Était-ce utile?

La solution

Je travaille avec C# et Postgres à l'aide de Npgsql2 composant, et qu'ils travaillent vite, que je vous recommande.

Vous pouvez télécharger à partir de https://github.com/npgsql/Npgsql/releases

Note: Si vous voulez une application qui fonctionne avec n'importe quelle base de données vous pouvez utiliser l' DbProviderFactory de la classe et de faire vos requêtes à l'aide de IDbConnection, IDbCommand, IDataReader et/ou IDbTransaction les interfaces.

Autres conseils

Npgsql - .Net Fournisseur pour PostGreSQL est un excellent pilote.Si vous avez utilisé le plus traditionnel ADO.NET cadre vous êtes vraiment de la chance ici.J'ai le code qui se connecte à l'Oracle, qui semble presque identique à l'PostGreSQL connexions.Plus facile de faire la transition hors de l'Oracle et de la réutilisation des cellules du cerveau.

Il prend en charge toutes les choses standard que vous voulez faire avec l'appel de SQL, mais il prend également en charge l'appel de Fonctions (procédures stockées).Cela inclut le retour de curseurs de référence.La documentation est bien écrit et donne des exemples utiles sans se faire de la philosophie ou de l'arcane.Voler le code à droite en sortant de la documentation et il fonctionnera instantanément.

Francisco Figueiredo, Jr et son équipe ont fait un excellent travail avec ce.
Il est maintenant disponible sur Github.
https://github.com/franciscojunior/Npgsql2

Le meilleur site pour l'info, c'est:http://npgsql.projects.postgresql.org/

Lire la documentation!http://npgsql.projects.postgresql.org/docs/manual/UserManual.html

Il y a un fournisseur Linq for PostgreSQL à https://www.nuget.org/packages/linq2db.PostgreSQL/.

Nous avons développé plusieurs applications à l'aide de visual studio 2005 avec devart ado.net fournisseur de données pour PostgreSql (http://www.devart.com/pgsqlnet/).

Un des avantages de ce fournisseur, c'est qu'il fournit un ensemble complet de support Visual Studio.Les versions les plus récentes inclure toutes les nouvelles fonctionnalités d'infrastructure comme linq.

Aujourd'hui, la plupart des langues/plateformes (Java, .NET, PHP, Perl, etc.) peut fonctionner avec presque n'importe quel SGBD (SQL Server, Firebird, MySQL, Oracle, PostgresSQL, etc.) donc, je ne m'inquiéterais pas pour une seconde.Sûr qu'il y a peut-être des problèmes et des petits problèmes, mais pas bloquant.

Comme jalcom suggéré que vous devriez programmer sur un ensemble d'interfaces ou d'au moins un ensemble de classes de base (DbConnection, DbCommand et ainsi de suite) pour avoir un facilement adaptable application.

Vous ne devriez pas avoir trop de problèmes.Comme d'autres l'ont mentionné, il y a de nombreux .Net PostgreSQL fournisseurs de données disponibles.Une chose que vous pouvez regarder dehors pour est que des fonctionnalités comme Linq ne sera probablement pas en mesure d'être utilisé.

Ne laissez pas un manque de prise en charge Linq vous arrêter.Un modèle que j'utilise est de toujours renvoyer mes données dans des listes, puis linq loin.J'ai commencé à faire de ce religieusement quand j'ai constaté que la même (certes obscur) expression Linq dans MySQL n'a pas de ramener les mêmes données que dans Sql Server.

Il suffit d'Aller à l'Outil-->Gestionnaire de Package NuGet-->Gestionnaire de Gestionnaire de Package Nuget

recherche pour NpgSql puis sélectionnez votre projet et cliquez sur Installer

exemple de Code

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();
            }            
        }

Ne pas utiliser de majuscules dans postgreSql, parce que sa casse.

Npgsql est excellent pilote, mais le seul problème que j'ai constaté jusqu'à présent est que la valeur Numérique ne s'inscrit pas dans un Système.Décimal, donc la seule option est de corriger chaque requête ou une base de données de schéma

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top