Entity Framework 4 - Cómo inyectar la lógica en colocador propiedad?
-
03-10-2019 - |
Pregunta
Tengo una propiedad de auto-generado a partir de la base de datos en mi edmx: Descripción . a continuación, se crea un archivo .cs "clase parcial" para la entidad y añadir una propiedad de sólo lectura: shortDescription . getter de shortDescription simplemente procesa (alimentación elimina línea, retorno de carro, etc) Descripción.
¿Cómo puedo aumentar la notificación de cambio de propiedad de shortDescription en el colocador de descripción?
Gracias!
Solución
Esto va a ser un truco, pero se puede hacer.
En primer lugar, se debe redefinir ReportPropertyChanging
y ReportPropertyChanged
. A continuación, comprobar el parámetro para el nombre de su propiedad ... en este caso "Descripción". Si se produce, ReportPropertyChanging
llamada o ReportPropertyChanged
con el nombre de propiedad derivada, en este caso "shortDescription". Para cualquier otro valor del parámetro, llamar a la versión de la base de ReportPropertyChanging/Changed
.
Editar: Por ejemplo:
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);
}
Otros consejos
Los métodos son también parcial, por lo que en su clase parcial puede agregar un código como éste
partial void OnDescriptionChanged()
{
OnPropertyChanged("ShortDescription");
}