C#.NET + PostgreSQL
Je cherche à travailler sur un projet qui utilise C#.NET (Assis sur une boîte windows) comme langue principale et PostgreSQL comme base de données backend (backend est assis sur une boîte linux). J'ai entendu ça ODBC.NET permet une intégration facile de ces deux composants.
Quelqu'un a-t-il déjà configuré C# et PostgreSQL pour travailler ensemble? Si oui, avez-vous des suggestions sur la façon de s'y prendre, les problèmes que vous avez trouvés, etc.?
8 réponses
Je travaille avec C# et Postgres en utilisantnpgsql2 composant, et ils fonctionnent rapidement, je vous recommande.
Vous pouvez télécharger à partir de https://github.com/npgsql/Npgsql/releases
Remarque: Si vous voulez une application qui fonctionne avec n'importe quelle base de données vous pouvez utiliser le DbProviderFactory classe et de faire vos requêtes à l'aide de IDbConnection, IDbCommand, IDataReader et/ou IDbTransaction interfaces.
Npgsql - Fournisseur. Net pour PostGreSQL-est un excellent pilote. Si vous avez utilisé le plus traditionnel ADO.NET cadre vous avez vraiment de la chance ici. J'ai un code qui se connecte à Oracle qui semble presque identique aux connexions PostGreSQL. Plus facile à la transition hors D'Oracle et réutiliser les cellules du cerveau.
Il prend en charge toutes les choses standard que vous voudriez faire avec L'appel de SQL, mais il prend également en charge l'appel de Fonctions (procédures stockées). Cela comprend le retour des curseurs de référence . La documentation est bien écrite et fournit des exemples utiles sans devenir philosophique ou arcane. Voler le code dès la sortie de la documentation et cela fonctionnera instantanément.
Francisco Figueiredo, Jr 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 être: http://npgsql.projects.postgresql.org/
Lisez la documentation! http://npgsql.projects.postgresql.org/docs/manual/UserManual.html
Il existe un fournisseur Linq pour PostgreSQL à https://www.nuget.org/packages/linq2db.PostgreSQL/.
Nous avons développé plusieurs applications en utilisant visual studio 2005 avec le devart ado.net fournisseur de données 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.) peut fonctionner avec presque tous les SGBD (SQL Server, Firebird, MySQL, Oracle, PostgresSQL etc.) donc je ne m'inquiéterais pas une seconde. Bien sûr, il pourrait y avoir des pépins et de petits problèmes, mais pas de showstopper.
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 et ainsi de suite) pour avoir une application facilement adaptable.
Vous ne devriez pas avoir trop de problèmes. Comme d'autres l'ont mentionné, il existe de nombreux fournisseurs de données.Net PostgreSQL disponibles. Une chose que vous voudrez peut-être surveiller 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 est de toujours retourner mes données dans des listes, puis linq loin. J'ai commencé à le faire religieusement quand j'ai trouvé que la même expression Linq (certes obscure) dans MySQL ne ramenait pas les mêmes données que dans Sql Server.
Il suffit D'aller à L'outil - > Gestionnaire de paquets NuGet - > Gestionnaire de paquets Nuget
Recherche de 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();
}
}
N'utilisez pas les majuscules dans postgreSql car elles sont sensibles à la casse.