我是一个Windows窗体应用程序,我的一个业务规则是当我停用一个客户时,DeactivationDateTime是用当前日期和时间定义的。
我正在使用实体框架和域驱动设计。
我应该从数据库中获取日期时间还是在本地计算机上强制使用正确的日期和时间?
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是一个由构造函数注入的Infrastructure接口。
答案 0 :(得分:3)
如果它在您的对象中映射的实体对我来说,从您的业务层中的应用代码中获取日期来自用户计算机更自然。如果不是,如果我是一名新的开发人员,那么我将很难发现DeactivationDateTime的填充位置。我假设您可以相信用户不会更改您的日期时间。
如果您有用户记得以UTC格式或TimeZone信息保存DateTime。