Le 23 septembre 2009 à 16:28
Actuellement je travaille sur un gros projet qui est utilisé avec PostgreSQL. Malheureusement, le provider de cette base de données (Npgsql) ne prends pas en charge une intégration totale avec les possibilités offertes par les interfaces de Visual Studio. Il nous est donc impossible de générer l’Edmx via Visual Studio. Bien sûr, il existe des providers payants qui permettent de le faire (je pense bien sûr à Devart), mais ce n’est pas le but de l’article.
C’est pour cela qu’il existe un fabuleux outil qui s’appelle “EdmGen2” disponible sur le MSDN Code Gallery. L'outil peut être utilisé comme un remplacement pour l'outil EdmGen qui est fourni avec le Framework. Net 3.5 SP1. EdmGen ne peut que lire et écrire les fichiers CSDL, SSDL et MSL. Par contre, EdmGen2 peut lire et écrire le format de fichier EDMX utilisée par les outils de conception de Visual Studio.
Note : avant de générer le fichier, il faut s’assurer que le provider est installé dans le GAC.
Donc, pour générer le fichier Edmx de notre base PostgreSQL, nous allons utiliser l’option modelgen d’edmgen2.exe, où il faut respecter la syntaxe suivante :
edmgen2.exe /modelgen "Port=5432;Encoding=WIN1252;Server=IBM-SERVER;
Database=Northwind;UserId=postgres;Password=1234" Npgsql Northwind
Une fois la commande effectuée, vous aurez le fichier Northwind.edmx de crée, il vous suffira de l’ajouter à votre projet et il sera utilisable directement.
Note : n’oubliez pas votre fichier App.config, il ne sera pas crée automatiquement, comme avec l’assistant de Visual Studio ;-).
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="NorthwindEntities" connectionString=
"metadata=res://*/Northwind.csdl|res://*/Northwind.ssdl|res://*/Northwind.msl;
provider=Npgsql;provider connection string="
Port=5432;Encoding=WIN1252;Server=IBM-SERVER;
Database=Northwind;UserId=postgres;Password=1234""
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
A bientôt :)
dd868ab3-95cb-4158-aa42-17f5563982c4|2|5.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04