0

J'utilise Entity Framework et générer mes classes POCO via T4 - ces classes héritent de rien et sont très simple et simple (créé par modèle dans vs 2010)Validation ASP.NET MVC 2: Le métadatatype ne peut pas être ajouté aux classes standard POCO CLR - quelle alternative?

J'ai essayé d'utiliser l'Metadatatype attribut pour que je puisse créer un copain classe mais quand je l'ai fait, je ne pouvais plus voir mes propriétés ... si j'ai supprimé l'attribut! les propriétés sont apparues.

Quoi qu'il en soit, la recherche plus je trouve cette déclaration de Microsoft

The associated class must be used with EDM or LINQ-to-SQL models because CLR 
types cannot mark existing properties with new attributes. If you are working with CLR 
objects directly, sometimes referred to as Plain Old CLR Object (POCO) types, you can 
apply the attributes directly to the model 

Il semble donc qu'il ne fonctionne pas ?? Quoi qu'il en soit, il est très difficile pour moi d'insérer mon annotation de données sur le MODEL lui-même car il est créé via T4, donc si je l'édite et ensuite relancer l'outil, il supprimera tous mes changements.

Est-ce que quelqu'un a réussi à faire fonctionner cela?

Je suis vraiment en difficulté.

+2

Ce que je fais est d'utiliser le modèle, puis * copier * les POCO à un projet séparé. Quand j'ai besoin d'actualiser les POCO, je génère à nouveau et fusionner dans les changements. Pas besoin de garder les POCO dans le fichier TT. – RPM1984

+0

Merci! par intérêt comment comparez-vous (ou fusionnez-vous) les changements? – Martin

Répondre

2

Il existe un consensus assez fort autour de SO et de la blogosphère MVC selon lequel vous ne devez pas annoter vos classes business/crud/domain avec des attributs. Non seulement toute votre pile MVC devient dépendante de vos classes métier/base de données, mais vous finirez rapidement avec plusieurs scénarios de contexte (même modèle, différentes règles de validation) impossibles à valider avec un seul modèle.

Utilisez des modèles de vue distincts pour vos écrans, annotez ceux-ci.


Sur la base de votre commentaire: « Les données Annotation sur le modèle, car lui-même créé par son T4 donc »

Ce que je veux dire, est mis à votre DataAnnotations sur vos viewmodels, laissez vos modèles POCO seul .

+0

Oui, je fais cela, j'utilise automapper pour mapper de mon modèle à mon viewmodel – Martin