2010-02-17 2 views
4

Je suis inquiet de le faire car mes changements seront écrasés quand le fichier dbml est généré automatiquement à nouveau (comme ils le sont souvent). Je pense à faire une classe partielle et à écrire les mêmes propriétés pour les annoter, mais je crains qu'elle ne se plaint de doublons, et la raison pour laquelle je ne peux même pas expérimenter m'amène à la deuxième partie de mes questions ...Ajout de DataAnnotations à la classe DBML générée automatiquement? MVC 2.0 ASP.NET

... que, la flèche extensible sur ma liste de fichiers dbml est manquant, un clic droit et en sélectionnant « Afficher le code » affiche juste une classe partielle vide comme ci-dessous ...

Partial Class FPDataContext 
End Class 

Alors , je ne peux même pas voir la classe! Quelqu'un at-il des idées sur l'un de ces problèmes?

J'utilise VS2010 RC et je suis tout simplement développer une application MVC 2.0 où je veux être en mesure d'utiliser les annotations telles que l'interface utilisateur [UIHint("RelativeDateTime")]

modifier:

problème

résolu, merci steve, est ici ma version VB modifier comme exemple ...

Imports System.ComponentModel.DataAnnotations 

<MetadataType(GetType(CommentMetaData))> _ 
Partial Public Class Comment 
End Class 

Public Class CommentMetaData 
    <UIHint("PostedSince")> _ 
    Public Property DateAdded() As DateTime 

End Class 

Répondre

7

Vous pouvez utiliser la fonction « classe ami » de DataAnnotations pour définir votre type de validation. Cela signifie que vous définissez les validations sur une autre classe, mais vous pouvez également définir cette classe «à l'intérieur de votre classe existante:

[MetadataType(typeof(CommentMetaData))] 
public partial class Comment { 
} 

public class CommentMetaData { 
    [StringLength(50),Required] 
    public object Name { get; set; } 
    [StringLength(15)] 
    public object Color { get; set; } 
    [Range(0, 9999)] 
    public object Weight { get; set; } 
} 
+0

me devança, +1 – Kirschstein

+0

pourriez-vous me dire ce que ProductMD fait référence à? Je suppose que c'est la classe dbml que j'essaye d'annoter? merci mon pote c'est une grande aide, esp puisque je n'ai pas besoin d'interagir avec ou de toucher la classe générée automatiquement. –

+0

ok, disons que j'ai un type "Comment", comment le ferais-je et y at-il une raison pour laquelle les classes sont imbriquées? –

1

Une solution possible est http://linqtometadataaddin.codeplex.com:

Linq Pour MetaData AddIn est un outil Visual Studio 2010 qui génère la classe métadatatype pour le fichier dbml. Ce module est dans les recomended applications Asp.net DynamicData

Questions connexes