Пара наблюдений: нет необходимости делать десятичное значение равным нулю, так как вы все равно будете его объединять. Кроме того, вам не нужно создавать ExtendedEmployee, так как вы можете просто добавить к частичному классу.
Я бы, вероятно, склонялся к реализации IMassIndexRepository
public interface IMassIndexRepository
{
public decimal GetInitialMassIndex(Employee e);
public decimal GetCurrentMassIndex(Employee e);
}
Тогда, если вы хотите, чтобы это было частью вашей модели, вы можете добавить метод расширения или ссылаться на хранилище в модели. Я бы склонялся к последнему:
public partial class Employee
{
public decimal? Initial_Mass_Index
{
get
{
return GetMassIndexRepository().GetInitialMassIndex(this);
}
}
public decimal? Current_Mass_Index
{
get
{
return GetMassIndexRepository().GetCurrentMassIndex(this);
}
}
}
Вам нужно будет реализовать GetMassIndexRepository (возможно, с использованием некоторого контейнера DI). Если у вас есть MassIndexRepository, вы можете реализовать кэширование на этом уровне, и «доступ к данным» не окажет такого же влияния на производительность, как прямой вызов свойства Linq.