Entity Framework 4 - Comment injecter dans la logique setter de propriété?
-
03-10-2019 - |
Question
J'ai dans mon edmx produit un auto-propriété de base de données: Description de . Je crée ensuite un fichier .cs "de classe partielle" pour l'entité et ajouter une propriété en lecture seule: ShortDescription . Le getter de ShortDescription traite simplement Description (Enlève saut de ligne, retour chariot, etc.).
Comment puis-je augmenter la notification de changement de propriété pour ShortDescription sur le poseur de la description?
Merci!
La solution
Cela va être un hack, mais il peut être fait.
D'abord, vous devez remplacer ReportPropertyChanging
et ReportPropertyChanged
. Vérifiez ensuite le paramètre pour le nom de votre propriété ... dans ce cas, « Description ». Si elle se produit, appelez ReportPropertyChanging
ou ReportPropertyChanged
avec le nom de la propriété dérivée, dans ce cas « ShortDescription ». Pour toute autre valeur du paramètre, appelez la version de base de ReportPropertyChanging/Changed
.
Modifier Par exemple:
protected override void OnPropertyChanging(string property)
{
if (property == "Description")
{
base.OnPropertyChanging("ShortDescription");
}
base.OnPropertyChanging(property);
}
protected override void OnPropertyChanged(string property)
{
if (property == "Description")
{
base.OnPropertyChanged("ShortDescription");
}
base.OnPropertyChanged(property);
}
Autres conseils
Les méthodes sont aussi partielle, donc dans votre classe partielle, vous pouvez ajouter du code comme ceci
partial void OnDescriptionChanged()
{
OnPropertyChanged("ShortDescription");
}