Entity Developper : Comment générer nos liaisons d’objets relationnels


Dans cet article, nous allons voir comment générer des "Mapping" d'objet-relationnel à partir d'une base données en utilisant Entity Developer.

Tout d'abord nous allons présenter Entity Developper.

"Entity developper" est un utilitaire graphique développé par DevArt qui permet de générer des "Mapping" d'objet-relationnel avec différents "Framework" : "Entity Framework", "Nhibernate", "Linq ToSQL". Il est disponible dans les outils Visual studio et téléchargeable en ligne.

Dans le cadre de notre article, nous allons générer notre ORM à partir d'une base de données Oracle avec le Framework Nhibernate.

prérequis :

  • Entity Developper
  • Oracle
  • Nhibernate

Nous pouvons à présent commencer la création de  nos objets métiers. Pour cela, nous allons exécuter Entity Developper puis dans le menu principal, cliquez sur nouveau Model. La fenêtre ci-dessous s'affiche et nous sélectionnons le model Devart Nhiberbate conformément aux conditions de notre environnement.

Capture_00.PNG

Dans la zone texte "Name", vous saisissez le nom de votre model puis vous cliquez sur créer. L'assistant de création du model s'ouvre.

Vu que nous avons une base de données existante, Nous allons cocher "Database First".  si nous n'avions pas encore notre base de données, on aurait pu cocher  "Model First" ainsi notre base de données aurait été créée à partir de notre modèle. Enfin dans le cas où nous avions envie de créer un modèle par fusion de plusieurs modèles existant, nous aurions coché "Import"

Capture_01.PNG

Lorsque nous cliquons sur le bouton "Next", nous accédons à l'étape de configuration de la connexion au serveur de base de données.

Ici nous allons définir notre fournisseur, oracle conformément aux conditions de notre exemple. Nous allons définir dans la zone "server" saisir le nom du serveur à utiliser, pour la zone "User Id" se sera le compte utilisateur à utiliser pour se connecter à notre serveur et enfin le mot de passe du compte utilisateur sera saisi dans la zone "password".

Capture_02.PNG

Pour vérifier que les informations de connexion que nous avons fournies sont correctes, on clique sur le bouton " Test Connection "

Capture_03.PNG

On clique sur "OK "pour fermer la boite de dialogue puis sur "Next". A l'étape suivante,  nous cliquons sur "Generate From Database" afin de pouvoir sélectionner les objets de la base de données qui seront générés. Dans l'autre cas c'est un model vide qui est créé.  nous cliquons sur "Next".

Capture_04.PNG

A cette étape, nous allons sélectionner les objets que nous souhaitons lier  dans notre modèle.  Nous pouvons distinguer déjà plusieurs  types d'objets dans cet écran et ne sélectionner que certains objets par types. Par exemple si notre base contient les tables Products, Customers, Orders, Adresses, on est libre de sélectionner juste les Tables Orders et customers si ce sont les seules qui nous intéressent.

NB: La version d'évaluation de Entity Developper ne peut pas générer plus de dix objets.

Capture_05.PNG

une fois que nous avons sélectionné  les objets qui nous intéresse, nous cliquons sur "Next". A l'étape suivante, nous pouvons paramétrer la génération des classes et des propriétés.

Dans la section "Class And Method Names", vous pouvez définir les préfixes ou suffixes à retirer ou ajouter aux noms de classes ou méthodes. De la même façon, la section "Properties' Names" vous définissez les suffixes et les préfixes à ajouter ou retirer sur les noms de propriétés.

Capture_06.PNG

Nous cliquons sur next. A cette étape on  va définir les propriétés de notre modèle:   La détection des relations Plusieurs à plusieurs, l'utilisation des commentaire, la définition de l'espace de nom, l'assembly et le schéma.

Capture_07.PNG

Nous cliquons sur "Next", la fenêtre qui s'affiche nous permet de définir le contenu du diagramme de modèle.  Nous allons choisir "All Entities" pour que tous les objets que nous avons sélectionnés soient contenus dans le modèles. Si au contraire nous choisissons "Split by Users" qui nous permets de générer un modèle par type d'utilisateur par exemple un modèle pour les tables, un modèle pour les vues, ...

Enfin si on sélectionne "Custom", on va pouvoir ne choisir que les objets que nous voulons créer dans notre modèle.

Capture_08.PNG

Nous cliquons sur "Next", Dans la fenêtre qui s'affiche, nous pouvons choisir le modèle de générations de code à utiliser pour notre modèle. Pour notre article,  nous utilisons celui fournit par Entity Developper.  C'est dans la section "General" que nous définissons les informations sur modèle de générations de code.

Dans la section "Generation", nous avons différentes zone de saisies :

  • Property Change Notifies,  à défaut à false dont la valeur "True" permet d'implémenter l'interface "INotifyChange" et provoquer ainsi l'événement "NotifyPropertyChanged" lorsque la valeur d'une propriété change. Ceci est particulièrement utile lorsqu'on utilise le design pattern MVVM.
  • Property Change Partial Methods, dont la valeur par défaut est False, lorsque sa valeur est True, les extensions des méthodes OnPropertyNameChanging et OnPropertyNameChanged sont générées.
  • Implement Validatable, s'il a pour valeur "true", chaque classe va implémenter l'interface IValidatable.
  • Implement Equals, s'il a pour valeur "true", chaque classe du modèle va redéfinir les méthodes Equals et GetHashCode.
  • Implement Cloneable, s'il a pour valeur "true", chaque classe va implémenter l'interface ICloneable.
  • Generate DataContract, va permettre de générer une classe sérialisable qu'on   pourra utilisée pour les communications par web services ou WCF.


Capture_09.PNG

Puis, dans la section "Output",  nous allons définir les propriétés de sorite telles que :

  • File Per Class dont la valeur "True", va permettre de créer un fichier par classe générée.
  • Model Name As FilePrefix  si sa valeur est "True", les fichiers générés auront nom de notre modèle comme préfixe.
  • DestinationFolder définit le chemin du dossier dans lequel on va enregistrer les fichiers générés.
  • GeneratePartialCalss permet de créer des classes partielles dans notre modèle.

Capture_10.PNG

Dans la section Validation, les informations ci-après devront être renseigner:

  • Validation Framework : qui correspond au Framework qui sera utilisé pour la validation (Entreprise Library fourni par Microsoft, Nhibernate, etc.)
  • Validation ErrorMessage qui consiste aux messages d'erreur qui seront renvoyé par le système si la validation échoue. Nous avons par exemple RangeMessage qui est défini pour un intervalle de valeurs, LengthMessage qui définit pour la longueur d'une chaine, ExpressionMessage qui est utilisé dans le cadre de la validation par une expression régulière.

Capture_11.PNG

Dans la section XML Mapping OutPut, l'utilisateur va définir les informations de sortie de fichier telles que :

Le répertoire de destination des fichiers générés,

L'action qui sera effectué lors de la génération ici une copie des fichiers dans le répertoire de sortie.

Et enfin la valeur de l'attribut "XML Mapping file per class " qui va générer un fichier de mapping par classe dans le cas où la valeur est "True".

Nous cliquons sur "Next" Et les objets de notre model et ce dernier vont être créer conformément aux choix que nous avons fait.

Capture_12.PNG

Nous cliquons sur finish et notre modèle s'affiche dans la fenêtre Entity Developper.


Capture_13.PNG

On clique sur le bouton enregistrer pour enregistrer notre model puis sur le bouton générer pour générer nos objets métiers dans des fichier ".cs" et les fichiers xml de mapping.


Nous avons à travers cette pu aborder les fonctionnalités de base de "Entity Developper ". Nous avons pu observer le gain en productivité que pourrait apporter cet outils.

Notre article reste ce pendant une introduction à cet outils et chacun pourrait approfondir ses connaissances  par le biais de la pratique.







e

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.