Репозиторий C # Domain Model +: Где разместить код, загружающий объект

У меня есть класс модели, который загружается из метода "GetById" в моем классе репозитория. Теперь мне нужно добавить к этому объекту дополнительные свойства, которых нет. t сохраняются в базе данных, но рассчитываются по классу обслуживания. Что-то вроде:

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, мне нужно загрузить его из базы данных, а затем вызвать генератор, чтобы определить "фактор вуа" (кхм). Куда должен идти этот код с архитектурной точки зрения? Текущие мысли:

1) В репозитории: Я чувствую, что перекладываю слишком много ответственности на репо, если добавляю его сюда.

2) В классе «MyEntity». Добавьте сюда код, который, возможно, лениво загружает WooFactor при обращении к нему. Это добавило бы много зависимостей к MyEntity.

3) Отдельный класс обслуживания - кажется излишним и ненужным.

7
задан Cœur 5 April 2018 в 16:11
поделиться