No Description

julien.legrand 08811f2a78 NEW Couche MVC en cours 9 years ago
CD67.ModeleMVC.Entity 08811f2a78 NEW Couche MVC en cours 9 years ago
CD67.ModeleMVC.Factory 2dd93b15d6 NEW Couche Factory ok 9 years ago
CD67.ModeleMVC.MVC 08811f2a78 NEW Couche MVC en cours 9 years ago
CD67.ModeleMVC.Tests 2dd93b15d6 NEW Couche Factory ok 9 years ago
.gitattributes 93b0e6952b NEW initial commit 9 years ago
.gitignore 93b0e6952b NEW initial commit 9 years ago
CD67.ModeleMVC.sln c8b7802bf3 NEW Couche Entity ok 9 years ago
ReadMe.txt 08811f2a78 NEW Couche MVC en cours 9 years ago

ReadMe.txt

Mode d'emploi du projet modèle MVC-entity

*-*-*-*-*-*
historique
v0.1 13/07/2016 (Julien Legrand) : 1ère version
*-*-*-*-*-*

# Actions à faire après copie
1. Renommer les projets en suivant ce schéma : "CD67.[nom appli].[Entity/Factory/MVC/Tests/Batchs]"
2. Renommer également les assemblies et espaces de nom de chaque projet (dans les propriétés des projets, onglet "Application")

x. Créer vos propres fichiers d'extension avec DataAnnotation ici : "CD67.ModeleMVC.Entity\Extend" et supprimer le fichier d'exemple "CD67.ModeleMVC.Entity\Extend\PARAM.cs"
x. Créer vos propres factory ici : "CD67.ModeleMVC.Factory" et supprimer le fichier d'exemple "CD67.ModeleMVC.Factory\PARAMFactory.cs"

10. supprimer ce fichier pour ne pas que l'on sache que vous avez utilisé un modèle


# Description générale
La solution est consituée de 4 projets :
- CD67.ModeleMVC.Entity : Projet qui contient les objets métiers, c'est à dire dans le cas de projets Entity : le modèle entity framework
- CD67.ModeleMVC.Factory : Projet qui contient les classes permettant la gestion des objets : les actions CRUD pour chacun à minima
- CD67.ModeleMVC.MVC : Projet qui comprent le site Web MVC
- CD67.ModeleMVC.Tests : Tests unitaires


# CD67.ModeleMVC.Entity
Le modèle se nomme par défaut "EntityModel"

Le dossier "Extend" contient les extensions éventuelles de classe Entity (qui se trouvent dans "EntityModel.edmx\EntityModel.tt\").
C'est notamment utile pour ajouter les DataAnnotations permettant de décrire le données en vue d'une génération de contrôles plus appropiés dans les vues MVC.
Attention à bien surveiller l'espace de noms lors de la création d'une classe dans ce sous-dossier (erreur fréquente) :
- par défaut ce sera : "CD67.ModeleMVC.Entity.Extend",
- mais il faut "CD67.ModeleMVC.Entity" (le même que les classes de bases Entity).

Le dossier "Internal" contient :
- "FormattedDbEntityValidationException.cs" : classe héritée de Exception qui permet un affichage plus complet dans les messages d'erreur pour les exceptions liées au format de données du modèle Entity
- "Entities.cs" : classe partielle permettant d'utiliser les nouvelles Exceptions FormattedDbEntityValidationException en surchargeant "SaveChanges()"
En cas d'ajout d'une nouvelle connexion avec Entity Framework, il faut ajouter une nouvelle classe d'extension du même type.


# CD67.ModeleMVC.Factory
Les classes Factory sont nommées ainsi : "[Nom objet]Factory"
On crée autant de classe Factory que d'objet à gérer
Elles doivent contenir un constructeur public avec le context Entities en paramètre qui se base sur le constructeur de la classe parente.
Elles contiennent généralement les fonctions suivantes : getById, getAll, add, update, delete.
C'est à adapter à chaque cas.

Le dossier "Internal" contient la classe de base "baseFactory" dont chaque "Factory" hérite.


# CD67.ModeleMVC.MVC
La partie Model du projet n'est pas nécessaire que pour définir des classes ne servant qu'à l'affichage, les classes mêtiers étant dans le projet Entity.

Le dossier "Views" contient par défaut :
- "Shared\_AppLayout.cshtml" : une page de disposition pour l'application
- "DisplayTemplates\YesNo.cshtml" et "EditorTemplates\YesNo.cshtml" : ils s'agit d'exemple de personnalisation d'affichage pour un type de champ, ici "YesNo". On attribut un type avec la DataAnnotation "[UIHint("YesNo")]" dans la classe Metadata et ce sont les fichiers dans DisplayTemplates et EditorTemplates du même nom qui seront utilisés pour créer le contrôle à l'affichage.

Le dossier "style" contient :
- un sous dossier "images" destiné à contenir toutes les images utilisées dans la mise en page
- "AppStyleSheet.css" : feuille de style à modifier pour le projet courant
- "ModeleStyleSheet.css" : feuille de style du modèle CD67 à ne pas modifier


# CD67.ModeleMVC.Tests
Projet le plus important de la solution :)