C # .NET + PostgreSQL

Je cherche à travailler sur un projet qui utilise C # .NET (assis sur une boîte Windows) en tant que langue principale et PostgreSQL en tant que firebase database principale (backend est assis sur une boîte Linux). J’ai entendu dire qu’ODBC.NET permet une intégration facile de ces deux composants.

Quelqu’un a-t-il déjà mis C # et PostgreSQL à travailler ensemble? Si oui, avez-vous des suggestions sur la façon de procéder, les problèmes que vous avez trouvés, etc.?

Je travaille avec C # et Postgres en utilisant le composant Npgsql2 , et ils fonctionnent rapidement, je vous le recommande.

Vous pouvez télécharger depuis https://github.com/npgsql/Npgsql/releases

Remarque: Si vous souhaitez une application compatible avec une firebase database, vous pouvez utiliser la classe DbProviderFactory et créer vos requêtes à l’aide des interfaces IDbConnection , IDbCommand , IDataReader et / ou IDbTransaction .

Npgsql – Fournisseur .Net pour PostGreSQL – est un excellent pilote. Si vous avez utilisé le framework ADO.NET plus traditionnel, vous avez vraiment de la chance ici. J’ai un code qui se connecte à Oracle qui ressemble presque aux connexions PostGreSQL. Facilité de transition hors Oracle et réutilisation des cellules cérébrales.

Il prend en charge toutes les fonctionnalités standard que vous souhaitez utiliser avec l’appel SQL, mais il prend également en charge les fonctions d’ appel (procédures stockées). Cela inclut le retour des curseurs de référence . La documentation est bien écrite et fournit des exemples utiles sans devenir philosophique ou mystérieux. Volez le code dès la sortie de la documentation et cela fonctionnera instantanément.

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

Le meilleur site pour info est: http://npgsql.projects.postgresql.org/

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

Il y a un fournisseur Linq pour PostgreSQL à l’ adresse https://www.nuget.org/packages/linq2db.PostgreSQL/ .

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

L’un des avantages de ce fournisseur est qu’il fournit une prise en charge complète de Visual Studio. Les dernières versions incluent toutes les nouvelles fonctionnalités du framework comme linq.

Aujourd’hui, la plupart des langages / plates-formes (Java, .NET, PHP, Perl, etc.) peuvent fonctionner avec presque tous les SGBD (SQL Server, Firebird, MySQL, Oracle, PostgresSQL, etc.). Bien sûr, il pourrait y avoir des problèmes et de petits problèmes, mais pas de coup de poing.

Comme jalcom l’a suggéré, vous devez programmer sur un ensemble d’interfaces ou au moins un ensemble de classes de base (DbConnection, DbCommand, etc.) pour avoir une application facilement adaptable.

Vous ne devriez pas avoir trop de problèmes. Comme d’autres l’ont mentionné, de nombreux fournisseurs de données .Net PostgreSQL sont disponibles. Une chose que vous voudrez peut-être rechercher est que des fonctionnalités comme Linq ne pourront probablement pas être utilisées.

Ne laissez pas un manque de support Linq vous arrêter. Un modèle que j’utilise consiste à toujours renvoyer mes données dans des listes, puis à les supprimer. J’ai commencé à le faire religieusement quand j’ai trouvé que la même expression Linq (certes obscure) dans MySQL ne rapportait pas les mêmes données que dans Sql Server.

Il suffit d’aller à l’outil -> Gestionnaire de packages NuGet -> Gestionnaire de packages Nuget Manager

Recherchez 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 ssortingng 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()) { ssortingng answer= dataReader.IsDBNull(0) ? "" : dataReader.GetSsortingng(0); } dataReader.Dispose(); } } catch (Exception e) { } finally { cmd.Dispose(); connection.Dispose(); } } 

N’utilisez pas de majuscules dans postgreSql car sa casse est sensible.