Как я могу эффективно обновить родительское свойство EntityObject, которое должно отображать только сумму связанного свойства коллекции дочерних сущностей? Мне нужно обновление в родительском объекте каждый раз, когда происходит изменение значения свойства в любом из дочерних объектов.
Пример: у меня есть родительский объект EntityObject «Компания» и набор связанных дочерних объектов «Сотрудник». Они имеют связь в EF между собой (одна компания для набора сотрудников). В частичном классе Employee я добавил пользовательское вычисляемое свойство «Зарплата», а в частичном классе Company я добавил пользовательское свойство «TotalSalaries».
Теперь, если какое-либо свойство «Зарплата сотрудника» обновляется до нового значения, я хочу немедленно обновить значение TotalSalaries свойства объекта «Компания».
Всякий раз, когда изменяется свойство Employee, и если тогда я всегда запускаю полный запрос внутри объекта Company, например:
TotalSalaries = Me.Employees.Sum(Function(x) x.Salary)
... это выглядит очень неэффективно, особенно если все значения настраиваемых свойств в классе Employee изменяются, например, зацикливанием (приведенный выше запрос выполняется снова и снова).
Можно ли более эффективно отразить обновление свойства в родительском классе?
TotalSalaries
. Сделайте это вычисляемым свойством (которое, как я думал, было в первую очередь). Таким образом, он рассчитывается только тогда, когда это необходимо для отображения. Это может быть очень быстро. При необходимости вы можете сохранить и отобразить рассчитанное значение и установить логическое значение, что перерасчет необходим при изменении зарплаты. - person Gert Arnold   schedule 30.05.2013