Entity Framework 4 - Come iniettare logica in proprietà setter?
-
03-10-2019 - |
Domanda
Ho una proprietà generato automaticamente dal database nel mio edmx: Descrizione . poi creo un file "classe parziale" cs per l'entità e aggiungi una proprietà di sola lettura: shortDescription . getter di shortDescription elabora semplicemente (avanzamento riga rimuove, ritorno del carrello, ecc) Descrizione.
Come posso aumentare la notifica di modifica di proprietà per shortDescription sul setter di descrizione?
Grazie!
Soluzione
Questo sarà un hack, ma si può fare.
In primo luogo, è necessario eseguire l'override ReportPropertyChanging
e ReportPropertyChanged
. Poi controlla il parametro per il nome della vostra proprietà ... in questo caso "Descrizione". Se si verifica, ReportPropertyChanging
chiamata o ReportPropertyChanged
con il nome della proprietà derivata, in questo caso "shortDescription". Per ogni altro valore del parametro, chiamare la versione base del ReportPropertyChanging/Changed
.
Modifica Ad esempio:
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);
}
Altri suggerimenti
I metodi sono anche parziale, così nella classe parziale è possibile aggiungere codice come questo
partial void OnDescriptionChanged()
{
OnPropertyChanged("ShortDescription");
}