Pregunta

Estoy pensando en trabajar en un proyecto que utiliza C#.NET (en una caja de Windows) como idioma principal y PostgreSQL como base de datos backend (el backend está en una caja de Linux).He oído que ODBC.NET permite una fácil integración de estos dos componentes.

¿Alguien ha tenido experiencia en configurar C# y PostgreSQL para que funcionen juntos?Si es así, ¿tiene alguna sugerencia sobre cómo hacerlo, problemas que haya encontrado, etc.?

¿Fue útil?

Solución

Estoy trabajando con C# y Postgres usando npgsql2 Componente, y funcionan rápido, te lo recomiendo.

Puedes descargar desde https://github.com/npgsql/Npgsql/releases

Nota: Si desea una aplicación que funcione con cualquier base de datos, puede utilizar el DbProviderFactory clase y realiza tus consultas usando Conexión IDb, Comando IDb, Lector de datos y/o IDbTransacción interfaces.

Otros consejos

npgsql - Proveedor .Net para PostGreSQL: es un controlador excelente.Si ha utilizado el marco ADO.NET más tradicional, está realmente de suerte.Tengo un código que se conecta a Oracle que parece casi idéntico a las conexiones de PostGreSQL.Es más fácil realizar la transición fuera de Oracle y reutilizar las células cerebrales.

Admite todas las cosas estándar que desearía hacer al llamar a SQL, pero también admite llamadas Funciones (procedimientos almacenados).Esto incluye la devolución de cursores de referencia.La documentación está bien escrita y proporciona ejemplos útiles sin volverse filosóficos ni arcanos.Roba el código directamente de la documentación y funcionará al instante.

Francisco Figueiredo, Jr. y su equipo han hecho un gran trabajo con esto.
Ya está disponible en GitHub.
https://github.com/franciscojunior/Npgsql2

El mejor sitio para obtener información es:http://npgsql.projects.postgresql.org/

¡Lea la documentación!http://npgsql.projects.postgresql.org/docs/manual/UserManual.html

Hay un proveedor Linq para PostgreSQL en https://www.nuget.org/packages/linq2db.PostgreSQL/.

Hemos desarrollado varias aplicaciones utilizando Visual Studio 2005 con el proveedor de datos devart ado.net para PostgreSql (http://www.devart.com/pgsqlnet/).

Una de las ventajas de este proveedor es que brinda soporte completo para Visual Studio.Las últimas versiones incluyen todas las características nuevas del marco como linq.

Hoy en día, la mayoría de los lenguajes/plataformas (Java, .NET, PHP, Perl, etc.) pueden funcionar con casi cualquier DBMS (SQL Server, Firebird, MySQL, Oracle, PostgresSQL, etc.), por lo que no me preocuparía ni por un segundo.Seguro que puede haber fallos y pequeños problemas, pero nada espectacular.

Como sugirió jalcom, debe programar con un conjunto de interfaces o al menos un conjunto de clases base (DbConnection, DbCommand, etc.) para tener una aplicación fácilmente adaptable.

No deberías tener demasiados problemas.Como otros han mencionado, hay muchos proveedores de datos .Net PostgreSQL disponibles.Una cosa que quizás desee tener en cuenta es que es probable que funciones como Linq no se puedan utilizar.

No dejes que la falta de soporte de Linq te detenga.Un patrón que uso es devolver siempre mis datos a listas y luego vincularlos.Comencé a hacer esto religiosamente cuando descubrí que la misma expresión Linq (ciertamente oscura) en MySQL no devolvía los mismos datos que en Sql Server.

Simplemente vaya a Herramienta-->Administrador de paquetes NuGet-->Administrador Administrador de paquetes Nuget

buscar NpgSql y luego seleccione su proyecto y haga clic en Instalar

Código de muestra

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

No use mayúsculas en postgreSql porque distingue entre mayúsculas y minúsculas.

Npgsql es un controlador excelente, pero el único problema que he encontrado hasta ahora es que el valor numérico no cabe en System.Decimal, por lo que la única opción es correcta para cada consulta o esquema de base de datos.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top