Utilizo Entity Framework Code First y tengo una entidad definida con una propiedad StartTime
, una propiedad EndTime
y una propiedad Duration
(junto con algunas otras). La propiedad Duration
es un campo calculado y es la duración en minutos entre la hora de inicio y finalización. Mis declaraciones de propiedades se muestran a continuación:Almacenar campo calculado de solo lectura con Entity Framework Code First
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public int Duration
{
get
{
return (int)this.EndTime.Subtract(this.StartTime).TotalMinutes;
}
}
me gustaría ejecutar este cálculo en el código, pero tienen el valor de duración persistió a la base de datos junto con los valores de tiempo de inicio y final (para que sea más fácil después de la línea cuando vengo a ejecutar informes contra estas cifras).
Mi pregunta es, ¿cómo puedo obtener esta propiedad de solo lectura para volver a hacer el mapa y guardarla en la base de datos usando el código primero?
Ah, buena idea para hacer que protegía! ¿También trataste de hacer el setter 'privado'? Sería interesante saber si EF asignará la propiedad a una columna DB. – Slauma
¡Acabo de probar con un setter 'privado' y sorprendentemente continúa funcionando! – KevB
EF actualizará la base de datos cada vez que se cargue esta entidad. Suponemos que el seguimiento de cambios de EF cree erróneamente que esta propiedad ha cambiado. Para nosotros, esto causó conflictos inesperados de concurrencia. –