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(PARAM_Metadata))]
public partial class PARAM
{
//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; }
}
}
///
/// Classe contenant les DataAnnotations pour chaque champ
///
public class PARAM_Metadata
{
[Required]
[Display(Name = "Clé")]
public string PRM_CLE;
[Required]
[Display(Name = "Libellé")]
public string PRM_LIB1;
[Required]
[Display(Name = "Valeur")]
[DataType(DataType.MultilineText)]
public string PRM_LIB2;
//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 = "Toujours Oui")]
[Range(0, 1)]
[UIHint("YesNo")]
public Nullable alwaysYes;
[Display(Name = "toujours Non")]
[Range(0, 1)]
[UIHint("YesNo")]
public Nullable alwaysNo;
}
}