Entity Framework : générer le modèle pour une base autre que SQL Server

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.

wizard-edm
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 :

image 

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.

edmx

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=&quot;
        Port=5432;Encoding=WIN1252;Server=IBM-SERVER;
        Database=Northwind;UserId=postgres;Password=1234&quot;"
      providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

A bientôt :)

Ajouter un commentaire

biuquote
  • Commentaire
  • Prévisualiser
Loading

A propos de l'auteur

Mathieu Perrein - Software Solutions Manager, Software Architect, Trainer MCT, MSP de 2010 à 2012.

 

MSP

 

MSP

MSP

 MSPD

MCT

 

Facebook

 

Ce blog est strictement personnel et les opinions exprimées ici n'engagent donc que moi, et pas mon employeur.

Tags

Vous avez désactivé JavaScript ou bien vous possédez une ancienne version d'Adobe Flash Player. Téléchargez la dernière version de Flash Player.