我应该从数据库中获取 DateTime.Now 吗?

Should i take DateTime.Now from Database?

我有一个 Windows 表单应用程序,我的业务规则之一是当我停用客户时,DeactivationDateTime 定义为当前日期和时间。

我正在使用 Entity Framework 和领域驱动设计。

我应该从数据库中获取日期时间还是在本地计算机上强制使用正确的日期和时间?

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 是一个由构造函数注入的基础结构接口。

如果实体映射到您的对象中,对我来说,从您的业务层中的应用程序代码获取用户机器的日期会更自然。如果不是,如果我是处理此代码的新开发人员,我将很难发现填充 DeactivationDateTime 的位置。我假设您可以相信您的用户不会更改您的日期时间。

如果您有用户记得以 UTC 格式或时区信息保存日期时间。