9
votes

Validation MVC3 avec cadre d'entité modèle / base de données d'abord

Je veux utiliser MVC 3 et le cadre d'entité pour ma demande.

Le modèle sera stocké dans un assemblage différent de l'application MVC.

Le choix que je fais est d'utiliser l'EF pour générer mes entités ou pour utiliser le code d'abord.

Avec le code Tout d'abord, je peux décorer des membres avec [requis], etc. Mais comment allez-y ajouter ces attributs si EF a généré des entités de la DB?

Avoir EF Générez mes entités économiserez beaucoup de temps, mais je souhaite que MVC de renseigner automatiquement la validation en fonction de la décoration de mes membres. Est-ce que ça a du sens? Si oui, comment je ferais cela?


0 commentaires

3 Réponses :


11
votes

Dans ce cas, ef Outils électriques pour générer des premières entités de code de base de données - Simple.


9 commentaires

Merci quand je fais que je reçois une erreur de nom ambiguë. Voici ce que j'ai dans ma classe partielle (l'entité est appelée article dans le modèle):


[MetadatataType (typeof (item)] Article de classe partielle publique {[StringLength (10), requis] Nom de la chaîne publiqueName Nom {Obtenir; ensemble; }}


Paul, l'ambiguïté "pourrait" être à voir avec le fichier edmx ef préexistant peut-être ??


En règle générale, la convention de dénomination pour les classes de métadonnées est [Nomname] métadonnées. Pour l'entité de l'article, une bonne nommée pour ses métadonnées serait importante. Essayez ceci pour éviter les conflits de nom ambigu


Mais cette approche apporte nécessaire pour éditer la classe générée par EF, ce qui n'est pas bon car les modifications seraient écrasées si la classe est ré-générée.


@Diego Nonono, vous pouvez créer une autre classe partielle de votre entité et mettre de la métadatiatetypeattribute dessus. De cette façon, vous ne touchez pas les classes générées automatiquement


Hey Archie! Merci d'avoir répondu à une telle vieille question. Je ne pense pas que je suive. J'ai la classe partielle appelée ClientControl généré par EF. Ensuite, j'ai créé une classe appelée clientControlmetadata avec les validations. Mais pour le faire fonctionner, j'ai dû modifier la classe ClientControl Addinf [MetadataType (typeof (ClientControlmetadata))] en plus de celui-ci. Comment puis-je succéder sans cette dernière étape d'édition de la classe EF?


@DieGo, à la dernière étape, vous créez une autre, votre propre classe partielle, ClientControl de classe partielle publique et mettez l'attribut à ce sujet. C'est ainsi que les classes partielles fonctionnent, elles compilent en un et un attribut se mettent à sa place après la compilation


N'oubliez pas que les partiels doivent résider dans le même assemblage, donc dans ce cas, le projet EDMX et non le MVC.



2
votes

mieux que de générer automatiquement vos entités, je vous recommande d'utiliser le code d'abord ou de mapper une base de données existante sur les classes de POCO (ne générant pas les entités, simplement les créer à la main et les mapper dans la base de données existante)

Scottgu a écrit sur Utilisation d'EF "code d'abord" avec une base de données existante .


0 commentaires

1
votes

Vérifiez ceci: Dans votre modèle de modèle (fichier avec extension Model.tt), vous pouvez pirater ce modèle pour générer des décorateurs, dans cet exemple, j'ajouterai le [Obligatoire] Decorator plus un message d'erreur

    [Required(ErrorMessage="The field Id is required")]
    public long Id { get; set; }


0 commentaires