У меня есть класс модели, который загружается из метода "GetById" в моем классе репозитория. Теперь мне нужно добавить к этой сущности дополнительные свойства, которые не сохраняются в базе данных, а рассчитываются по классу обслуживания. Что-то вроде:
public class MyEntity
{
public int ThingId { get; set; };
public string ThingName { get; set; }
// Set from the service
public int WooFactor { get; set; }
}
public class WooFactorGenerator
{
public int CalculateWooFactor(MyEntity thing); // Hits other services and repo's to eventually determine the woo factor.
}
// Code to get a "MyEntity":
var myEntity = repo.GetById(1);
var gen = new WooFactorGenerator();
myEntity.WooFactor = gen.CalculateWooFactor(myEntity);
Итак, чтобы загрузить / насытить объект MyEntity, мне нужно загрузить его из БД, а затем вызвать генератор, чтобы определить «коэффициент woo» (хм). Куда должен идти этот код с архитектурной точки зрения? Актуальные мысли:
1) В репозитории: я чувствую, что слишком много ответственности перед репо, если добавляю его сюда.
2) В классе "MyEntity". Добавьте сюда код, который, возможно, лениво загружает WooFactor при обращении к нему. Это добавило бы много зависимостей к MyEntity.
3) Отдельный класс обслуживания - кажется излишним и ненужным.