Entity Framework con PostgreSQL

| |



PostgreSQL

Npgsql - .Net Data Provider for Postgresql son unas DLL que se agregan a Visual Studio .Net pero no se integra con el Wizard del Visual Studio .Net porque no hay soporte oficial de Npgsql, por otra parte uno las puede agregar en cada uno de los proyecto sin ningún problema, el inconveniente es que al intentar usarlas hay que generar el modelo desde "Visual Studio 2008 Command Prompt" e incluir los dos archivos ".cs" que genera al proyecto.
A Continuación doy los pasos para poder usarlo en un ejemplo sencillo.

PASO 1:

Descargue de la página oficial de Npgsql
El que dice:
Npgsql2.0.8-bin-ms.net3.5sp1.zip












Descargue la Última versión de PostgreSQL

Obviamente hay que tener

Visual Studio 2008 Professional Edition Trial con SP1

.Net Framework 3.5

PASO 2:

Instalamos el PostgreSQL , el Visual Studio, .NET Framework 3.5 y descomprimimos el Npgsql2.0.8-bin-ms.net3.5sp1.zip recomiendo que lo descompriman en C:\ para que no estén buscando la ubicación.

Ahora vamos a registrar nuestras DLL de Npgsql en el GAC de Visual Studio.
Primero hay que abrir nuestro "Visual Studio 2008 Command Prompt" que se encuentra por lo general en "Inicio -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt "

Hay ejecutamos las siguientes líneas de código:

gacutil -i c:\ubicacion de la dll Npgsql\Npgsql.dll
gacutil -i c:\ubicacion de la dll Mono.Security\ Mono.Security.dll

En mi caso

gacutil -i c:\ Npgsql2.0.8-bin-ms.net3.5sp1\bin\Npgsql.dll
gacutil -i c:\ Npgsql2.0.8-bin-ms.net3.5sp1\bin\Mono.Security.dll

PASO 3:


Ahora hay que agregar una línea de código XML al archivo machine.config del Framework que por lo general se encuentra en C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\

Abrimos el Archivo machine.config con el editor de su preferencia.

Y agregamos en el área de <DbProviderFactories></DbProviderFactories>
la Siguiente línea de código

<DbProviderFactories>
<add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.8.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
</DbProviderFactories>





PASO 4:

Ahora abrimos el motor de base de datos PostgrsSQL y creamos una base de datos sencilla
Base de datos Test

Recuerda que la base de datos esta sin datos hay que alimentarla.

PASO 5:

Ahora ejecutamos la siguiente line de código en el "Visual Studio 2008 Command Prompt".

c:\> edmgen.exe /provider:Npgsql /mode:fullgeneration /c:"string de conexion" /project:NombreQueQuiera /language:CSharp

En mi caso

c:\> edmgen.exe /provider:Npgsql /mode:fullgeneration /c:"DATABASE=test;HOST=127.0.0.1;PORT=5432;PASSWORD=yta;USER ID=postgres" /project:TestPostgreSQL /language:CSharp

Los Archivos van a quedar en esta Ubicación

C:\Program Files\Microsoft Visual Studio 9.0\VC
Puedes encontrar mas información sobre los Archivos de extensión.

CSDL en :

MSL en :

SSDL en :

De ahí lo pasas al proyecto que estés trabajando y Solo agregas los archivos ".cs"

No te preocupes si salen errores de referencia en el siguiente paso especificamos cuales son.

PASO 6:

Ahora hay que agregar unas referencias:

System.Data.Entity
System.Runtime.Serialization

Después de esto Tendrás que crear el App.Config y configurar la cadena de conexión.

Y listo ahora es posible hacer CRUD a la base de datos, para ver el ejemplo terminado dejo el SourceCode.



8 comentarios:

jhon dijo...

Excelente aporte emerson, ahora toca es mirar las conexiones en caliente, pero creo que toca esperar a que hagan el release oficial del framework 4

Emerson Perdomo Ballen dijo...

Claro Jhon hay que esperar al Framework 4 que llega con unas mejoras increibles para Entity Framework.

jhon dijo...

I can't wait!!!!!!

KAndroid dijo...

Muy buen aporte. Muchas gracias.

Creator dijo...

Excelente!!!!

rjzamorano dijo...

Estimado puedes subir el ejemplo a otro server ya que Megaupload murio

Vijay dijo...

Hi..
I have followed your steps but at the end when i ran edgem.exe line in visual studio command prompt, it throws an error,

error 7015: parameter switch '' is not valid. Can you please help me

Akhil_lal_cv dijo...

HI,
me too got the same error as Mr. Vijay got

Publicar un comentario en la entrada