C#.NET + PostgreSQL

Estou a pensar em trabalhar num projecto que usa C#.NET (sentado em uma caixa do windows) como a língua primária e PostgreSQL como a base de dados da infra-estrutura (a infra-estrutura está sentada em uma caixa linux). Já ouvi isso. ODBC.NET permite uma fácil integração destes dois componentes.

Alguém já teve experiência em montar o C# e o PostgreSQL para trabalharem juntos? Se assim for, você tem alguma sugestão sobre como ir sobre ele, questões que você encontrou, etc.?

Author: akdom, 2008-09-06

8 answers

Estou a trabalhar com C# e Postgres usando o componente Npgsql2, e eles trabalham depressa, eu recomendo-te.

Pode obter a partir de https://github.com/npgsql/Npgsql/releases

Nota: Se você quer um aplicativo que funciona com qualquer banco de dados que você pode usar o DbProviderFactory classe e fazer suas consultas usando IDbConnection, IDbCommand, IDataReader e/ou IDbTransaction interfaces.

 51
Author: jalcom, 2016-01-18 09:27:53

Npgsql -. Net Provedor para PostGreSQL-é um excelente driver. Se você usou o mais tradicional ADO.NET neste contexto, estão realmente com sorte. Tenho um código que se liga à Oracle que parece quase idêntico às ligações pós-Gresql. É mais fácil fazer a transição do Oráculo e reutilizar células cerebrais.

Ele suporta todas as coisas padrão que você gostaria de fazer com chamar SQL, mas também suporta chamar Funções (procedimentos armazenados). Presente inclui a devolução de cursores de referência . A documentação é bem escrita e fornece exemplos úteis sem ficar filosófico ou Arcano. Roube o código da documentação e ele vai funcionar instantaneamente.

Francisco Figueiredo, Jr e sua equipe fizeram um ótimo trabalho com isso.
Está agora disponível em .
https://github.com/franciscojunior/Npgsql2

O melhor site para informações e: http://npgsql.projects.postgresql.org/

Leia a documentação! http://npgsql.projects.postgresql.org/docs/manual/UserManual.html
 11
Author: Stradas, 2012-04-02 17:01:39

Existe um fornecedor de Linq para o PostgreSQL em https://www.nuget.org/packages/linq2db.PostgreSQL/.

 11
Author: David Schmitt, 2017-12-28 14:41:44
Desenvolvemos várias aplicações usando o visual studio 2005 com o devart. ado.net fornecedor de dados para PostgreSql ( http://www.devart.com/pgsqlnet/). Uma das vantagens deste fornecedor é o suporte Visual completo do estúdio. As últimas versões incluem todas as novas funcionalidades de framework como linq.
 3
Author: Simon, 2008-09-09 12:12:05

Hoje em dia, a maioria das linguagens/plataformas (Java,. net, PHP, Perl, etc.) pode trabalhar com quase qualquer DBMS (SQL Server, Firebird, MySQL, Oracle, PostgresSQL etc. por isso não me preocuparia nem por um segundo. Claro que pode haver falhas e pequenos problemas, mas nenhum showstopper.

Como o jalcom sugeriu, você deve programar contra um conjunto de interfaces ou pelo menos um conjunto de classes de base (DbConnection, DbCommand e assim por diante) para ter uma aplicação facilmente adaptável.

 2
Author: Andrei Rînea, 2008-09-06 00:04:37
Não deves ter muitos problemas. Como outros já mencionaram, há muitos provedores de dados. Net PostgreSQL disponíveis. Uma coisa que você pode querer olhar para fora é que recursos como Linq provavelmente não será capaz de ser usado.
 2
Author: Kibbee, 2008-09-06 00:23:10
Não deixes que a falta de apoio do Linq te impeça. Um padrão que eu uso é sempre retornar meus dados em listas, e então linq afastado. Comecei a fazer isso religiosamente quando descobri que a mesma expressão (reconhecidamente obscura) do Linq no MySQL não trouxe de volta os mesmos dados que no servidor Sql.
 2
Author: user542319, 2013-09-26 21:02:01

Basta ir para a ferramenta-->NuGet Package Manager-- > Manager Nuget Package Manager

Procurar por NpgSql e depois seleccionar o seu projecto e carregar em Install

Código Da Amostra

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ão utilize a maiúscula no postgreSql porque a sua capitalização é sensível.

 1
Author: Riyaz Ahamed, 2016-11-30 07:29:13