Este tutorial está pensado para todos aquellos que quieren o deben de salir de la "zona de confort" programando en .NET, al tener que conectar con una base de datos no soportada de forma nativa por Entity framework.
Así revisaré paso a paso cómo conectarme vía ADO.NET y utilizar las funciones más básicas para poder hacer un CRUD (Create, Read, Update y Delete) de una sola tabla sencilla desde una base de datos PostgreSQL.
Pre requisitos
Los prerequisitos para realizar este tutorial son: * Tener una base de datos PostgreSQL publicada (sea en local o en remoto). * Que se llame GenbetaDevPostgreSQL * Que tenga una tabla usuarios, con al menos dos campos: id y nombre * Tener instalado Visual Studio Express 2013 * Tener instalado el Putty * Tener instalado el administrador de PostgreSQL PgAdmin * Tener ganas de meternos en este berenjenal.
Habilitar el acceso remoto a la bd
El primer problema con el que me he encontrado, y puede ser que te encuentres tú también, es el acceso remoto a la base de datos. La mayoría de nosotros no nos ponemos un PostgreSQL en nuestra propia máquina - si es así estás de suerte, te puedes saltar esta parte - y por defecto la instalación no permite el acceso remoto a la base de datos.
Así cuando intento conectar, el servidor me responde con que el fichero pg_hba.conf no tiene la entrada necesaria que me permita conectarme de forma remota. Lo cual es un mensaje que lleva a engaño - como si con una sola actuación lo arreglara todo - cuando realmente tengo que hacer dos cosas diferentes.
Así lo primero que debo de hacer es establecer una conexión remota vía SSH con una aplicación como Putty. Obviamente necesitaremos un usuario con privilegios suficientes para navegar y configurar el servidor, y la contraseña adecuada.
Una vez que estoy dentro, con derechos suficientes (en mi caso de root), tengo que encontrar el fichero pg_hba.conf, que puede estar en varios y diferentes situaciones dentro del servidor.
Para hallar su localización utilizo el siguiente comando desde el directorio raíz del servidor:
find / –iname “pg_hba.conf”
Lo cual me devuelve la dirección física en donde está el fichero. En mi caso en:
/etc/postgresql/9.1/main/pg_hba.conf
Lo siguiente es editarlo con el “maravilloso” Vim, abriendo el fichero con el siguiente comando:
vim /etc/postgresql/9.1/main/pg_hba.conf
Aquí debo buscar la línea de comentario que pone "# IPv4 local connections", y añadirle un última entrada host.
# IPv4 local connections: host all all 127.0.0.1/32 trust host all all 0.0.0.0/0 password
Así le indico que permita acceder al servidor desde cualquier IP, a cualquier base de datos, en donde el usuario provea del el login y password correctos.
Obviamente esto es un tutorial muy básico y realmente estamos abriendo un agujero de seguridad en el acceso a nuestra base de datos. Lo normal es limitar por IP el acceso, y cambiar el password en texto plano por md5, pero ahora mismo voy a actuar como si estuviera en una realidad alternativa.
Ahora tengo que editar otro fichero, que está en el mismo directorio que el anterior, y que es el que configura las IP que escucha PostgresSQL; que por defecto solo es localhost. Y en el cual edito el fichero principal de configuración – una vez más con Vim.
vim /etc/postgresql/9.1/main/postgresql.conf
Aquí, básicamente tengo que descomentar dos líneas: una que permite escuchar por todas las ip, y la segunda que permita usar ssl.
listen_addresses = '*' # what IP address(es) to listen on; ssl = true # (change requires restart)
Solo me falta un paso más: reiniciar el servicio de la base de datos, y para ello me cambio al directorio,
/etc/init.d
En donde lanzo el siguiente comando.
sudo service postgresql restart
Espero un ratito a que se reinicie y, listo!!, ya puedo conectarme remotamente a mi base de datos… y ahora es cuando empieza lo bueno.
En GenbetaDev | Conectar nuestra aplicación .NET a PostgreSQL. Más información | PostgreSQL, Visual Studio Express 2013, Putty, PgAdmin