【发布时间】:2015-08-27 13:50:32
【问题描述】:
我有一个 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 接口,由构造函数注入。
【问题讨论】:
-
此属性是否映射到您的用户实体?
-
与您的问题无关,但是,我会将
Check.ValidId(id)更改为具体的UserId和CustomerIdVO 或统一的EntityIdVO。此外,DeactivatedData在我看来是一个奇怪的建模概念。为什么不使用user.activationStatus = new InactiveStatus(date)甚至user.status = new InactiveStatus(date)之类的东西。当User/Customer的DeactivateData时,你真的会有一个商业专家说......
标签: c# entity-framework domain-driven-design