using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; // Attention à l'espace de nom, lors de la création d'une nouvelle classe celui-ci sera par défaut : // namespace CD67.ModeleMVC.Entity.Extend // Alors que pour étendre une classe il faut être dans le même namespace que l'original namespace CD67.ModeleMVC.Entity { /// /// Classe d'extension de celle d'Entity, nécessaire pour y associer les Metadata /// [MetadataType(typeof(EXEMPLE_VIKINGS_Metadata))] public partial class EXEMPLE_VIKINGS { //Peut contenir une extension utile à la classe (méthode static ou non, nouvelles propriétés, propriétés construites dynamiquement selon d'autres de la classe, etc.) //Exemples de 2 propriétés booléennes qui ont en base de données 0 ou 1 public Nullable alwaysYes { get { return 1; } set { this.alwaysYes = value; } } public Nullable alwaysNo { get { return 0; } set { this.alwaysNo = value; } } //Exemple d'un sous-type fictif pour les listes imbriquées public int ID_SOUS_TYPE { get; set; } } /// /// Classe contenant les DataAnnotations pour chaque champ /// public class EXEMPLE_VIKINGS_Metadata { [Required] [Display(Name = "Clé")] public int ID { get; set; } [Required] [Display(Name = "Nom")] [StringLength(255)] public string NOM { get; set; } [Required] [Display(Name = "Type")] public int ID_TYPE { get; set; } [Display(Name = "Sous type", Description = "Valeur non enregistrée")] public int ID_SOUS_TYPE { get; set; } [Display(Name = "Description")] [StringLength(255)] [DataType(DataType.MultilineText)] public string DESCRIPTION { get; set; } [Display(Name = "Date inutile")] [DataType(DataType.Date)] public Nullable DATE_INUTILE { get; set; } //Propriétés ajoutées dans la classe partielle et qui utilise un affichage customisé MVC "YesNo", qui se trouve ici : "Views\Shared\DisplayTemplates" et "Views\Shared\EditorTemplates" [Display(Name = "A faim?", Description = "Toujours oui")] [Range(0, 1)] [UIHint("YesNoInt")] public Nullable alwaysYes; [Display(Name = "Intellectuel?", Description = "Toujours non")] [Range(0, 1)] [UIHint("YesNoInt")] public Nullable alwaysNo; } }