У меня есть приложение Windows Forms и одно из моих бизнес-правил: когда я дезактивирую клиента, DeactivationDateTime определяется с текущей датой и временем.Должен ли я взять DateTime.Now из базы данных?
Я использую Entity Framework и Domain Driven Design.
Должен ли я взять дату-время из базы данных или установить правильную дату и время на локальном компьютере?
public void DeactivateCustomer(int customerId, int userId)
{
Check.ValidId(customerId);
Check.ValidId(userId);
var u = userRepository.GetById(userId);
if (u == null)
throw new EntityNotFoundException(userId);
var c = customerRepository.GetById(id);
if (c == null)
throw new EntityNotFoundException(id);
c.DeactivateData = new DeactivateData(userId, dateTimeProvider.Now);
customerRepository.SaveOrUpdate(c);
}
dateTimeProvider - это интерфейс инфраструктуры, который вводится конструктором.
Является ли это свойство сопоставлено с вашим пользовательским объектом? –
Привет, Марк. Да. ' –
Nothin, связанный с вашим вопросом, но я бы изменил 'Check.ValidId (id)' с конкретными 'UserId' и' CustomerId' VOs или унифицированным 'EntityId' VO. Кроме того, 'DeactivatedData' выглядит для меня странной модельной концепцией. Почему бы не что-то вроде 'user.activationStatus = new InactiveStatus (date)' или даже 'user.status = new InactiveStatus (date)'. Если бы у вас действительно был эксперт по бизнесу, когда «DeactivateData» пользователя/клиента ... – plalx