Модель домена C # + хранилище: где разместить код, который загружает объект

У меня есть класс модели, который загружается из метода "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) Отдельный класс обслуживания - кажется излишним и ненужным.

7 голосов | спросил Matt Roberts 3 Maypm11 2011, 17:32:52

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132