IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Validation dans le model et Entity Framework


Sujet :

ASP.NET MVC

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Par défaut Validation dans le model et Entity Framework
    bonjour,
    Tout d'abord je ne suis pas sur d'être sur le bon forum (j'ai longuement hésité entre celui-ci et le forum EF) et si je ne suis pas sur le bon forum je m'en excuse au-près des modérateurs.
    Je développe un CMS en asp.net MVC2 sous VS2010 avec EF4.0.
    J'ai décidé de faire mes validations dans le model. Pour cela j'ai créé une classe MaTable_Validation pour chaque table de ma BD.
    voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class wsgModuleArticle_validation
        {
            [Required(ErrorMessage = "vous devez remplir le texte de votre article")]
            public string texteWsgModuleArticle { get; set; }
        }
    puis j'ai décoré ma classe de mon designer.cs avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [MetaDataType(typeof(wsgModuleArticle_validation))]
    La validation marche bien.
    Mon probleme est que lorsque que l'on régénère le designer les décoration qui était dedans sont supprimer avec l'ancien designer. Ce qui est normal.
    Ma question est donc existe il une solution pour rendre permanent ma validation par rapport à la base de données ou suis-je condamné à redécorer toute mes table de mon designer à chaque régénération?
    J'espère avoir été claire et je vous remercie d'avance pour le temps passé sur mon post.
    Cordialement,

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    Je crois qu'il est possible de faire une classe qui stockera tes attributs, en plus de celle générée par le designer.

    Je n'ai pas d'exemples à te donner, mais il devrait y avoir plusieurs exemples sur le net.

  3. #3
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Si tu veux un exemple bien détaillé et en FR, tu peux aller voir ici:
    http://www.lgmorand.com/blog/post/20...notations.aspx

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Par défaut
    bonjour,
    Merci pour le lien. J'ai suivi le "mini" tuto que tu m'a conseillé mais j'ai un problème.
    J'ai donc implémenté les deux T4 comme expliqué dans le tuto mais j'ai l'erreur suivante:
    L'espace de noms 'MaquetteNouvelleSolution.Models' contient déjà une définition de 'FixupCollection'
    Cette erreur est du au fait que chaque T4 génère la classe FixupCollection.
    Le premier template ou il faut juste ajouter ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [MetadataType(typeof(<#=code.Escape(entity)#>MetaData))]
    génère une seul classe correspondant a mon template contenant la classe FixupCollection.
    Le deuxième template dans lequel il faut fait des modifications un peut plus lourde génère les classes POCO et une classe correspondant au template contenant la classe FixupCollection.
    Les classes POCO généré son bien décorées des validateurs comme prévu.
    Je comprend le problème qui est que l'on ne peut pas avoir deux classes avec la même définition mais je ne sais pas quoi faire pour résoudre ce problème.
    Dois-je en supprimer, ou modifier une des deux? Ou peut être que le problème est ailleurs. Est ce que c'est normal que mon premier template ne génère pas d'autres classes(celles correspondant à ma BD) que celle lui correspondant. Ou peut être que le probleme c'est moi qui ne comprend plus rien
    cordialement,

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Par défaut
    excusez moi pour mon dernier post, je me suis un peu emballé et j'ai manqué de discernement
    J'ai voulu suivre le tuto à la lettre alors qu'il ne répondait pas exactement à mais besoin...
    J'ai donc trouver la solution. Ca pourra peut etre intérresser quelqu'un.
    Donc j'ai ajouter un élément de génération de code a mon edmx et plus précisément
    ADO.NET EntityObject Generator
    puis dans ce fichier .tt j'ai rajouter la directive using suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.ComponentModel.DataAnnotations;
    puis le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [MetadataType(typeof(<#=code.Escape(entity)#>_Validation))]
    juste avant la génération des classes.
    j'ai également ajouter une référence using pour qu'il trouve mes fichiers de validations qui sont tous formaté de la même manière MaTable_Validation.
    Et voila ça marche
    Merci Philippe pour ton lien qui ma donc beaucoup servit finalement et qui accessoirement ma fait découvrir les templates T4
    cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme dans entity framework
    Par sporta85 dans le forum Entity Framework
    Réponses: 1
    Dernier message: 14/03/2010, 22h57
  2. Réponses: 1
    Dernier message: 03/03/2010, 23h31
  3. Réponses: 2
    Dernier message: 01/03/2010, 21h32
  4. Réponses: 1
    Dernier message: 25/02/2010, 22h41
  5. Entity Framework : Model et DAO
    Par Chacha35 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/09/2009, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo