Это зависит от фактического контекста.Является ли EventTimes
сущностью или это скорее часть вашей доменной модели?
В любом случае я бы не включил ее в dto , поскольку это действительно просто для передачи данных, поэтомуне должно содержать никакой логики (кроме, может быть, проверки).
Поскольку ответственность за этот расчет не является ни частью dto, ни моделью сущностей, вы можете поместить тяжелый расчет в EventTimesCalculator
примерно так:
public class EventTimesCalculator
{
public decimal CalculateTotalHours(EventTimes eventTimes)
{
return (decimal)(eventTimes.End - eventTimes.Start).TotalHours;
}
}
Если EventTimes
является частью модели бизнес-уровня / домена, более подходящим способом было бы использование метода GetTotalHours()
внутри модели вместо свойства.Конечно, вам необходимо сопоставить его с моделью постоянства, если вы хотите сохранить эту информацию.Опять же, поскольку эта информация может быть рассчитана, вам вообще не нужно ее сохранять, главным образом потому, что логика может измениться (пример: исключить разрывы, прерывания или тому подобное).
Мой совет - перестать думатьс точки зрения сущностей базы данных (которые, как я полагаю, вы имели в виду выше).
В конце концов, это скорее деталь, в которую вы помещаете логику вычислений, и, что более важно, это иметь прямой дизайн.Является ли приложение монолитным, помещает ту логику в ваш слой, который содержит бизнес-логику.Является ли это распределенной архитектурой, обработайте расчет для модели в службе, отвечающей за Eventing.Это всего лишь небольшой API, будьте проще, поместите его там, где вы или ваша команда ожидаете этого больше всего.