Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该现在从数据库中获取DateTime吗?_C#_Entity Framework_Domain Driven Design - Fatal编程技术网

C# 我应该现在从数据库中获取DateTime吗?

C# 我应该现在从数据库中获取DateTime吗?,c#,entity-framework,domain-driven-design,C#,Entity Framework,Domain Driven Design,我有一个Windows窗体应用程序,我的业务规则之一是,当我停用客户时,将使用当前日期和时间定义停用日期时间 我正在使用实体框架和领域驱动设计 我应该从数据库中获取日期时间还是在本地计算机上强制输入正确的日期和时间 public void DeactivateCustomer(int customerId, int userId) { Check.ValidId(customerId); Check.ValidId(userId); var u

我有一个Windows窗体应用程序,我的业务规则之一是,当我停用客户时,将使用当前日期和时间定义停用日期时间

我正在使用实体框架和领域驱动设计

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

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格式或时区信息保存日期时间。

如果在您的对象中映射了实体,那么对于我来说,更自然的做法是从业务层的应用程序代码从用户计算机获取日期。如果不是的话,如果我是一个新开发人员,在这段代码上工作,我将很难发现DeactivationDateTime的填充位置。我假设您可以相信您的用户不会更改您的日期时间


如果您有其他用户,请记住以UTC格式或时区信息保存日期时间。

如果在您的对象中映射了实体,那么对于我来说,更自然的做法是从业务层的应用程序代码从用户计算机获取日期。如果不是的话,如果我是一个新开发人员,在这段代码上工作,我将很难发现DeactivationDateTime的填充位置。我假设您可以相信您的用户不会更改您的日期时间


如果您有其他用户,请记住以UTC格式或时区信息保存日期时间。

如果在您的对象中映射了实体,那么对于我来说,更自然的做法是从业务层的应用程序代码从用户计算机获取日期。如果不是的话,如果我是一个新开发人员,在这段代码上工作,我将很难发现DeactivationDateTime的填充位置。我假设您可以相信您的用户不会更改您的日期时间



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

此属性是否映射到您的用户实体?与您的问题无关,但我将更改
检查。ValidId(id)
使用具体的
用户id
客户id
VOs或统一的
实体id
VO。另外,
DeactivatedData
在我看来是一个奇怪的建模概念。为什么不像
user.activationStatus=new-InactiveStatus(date)
或者甚至
user.status=new-InactiveStatus(date)
。您是否真的会让业务专家说,当
用户/客户的
停用数据
…此属性是否映射到您的用户实体?与您的问题无关,但我会更改
检查。ValidId(id)
带有具体的
用户ID
客户ID
VOs或统一的
实体ID
VO。另外,
DeactivatedData
在我看来是一个奇怪的建模概念。为什么不像
user.activationStatus=new-InactiveStatus(date)
或者甚至
user.status=new-InactiveStatus(date)
。您是否真的会让业务专家说,当
用户/客户的
停用数据
…此属性是否映射到您的用户实体?与您的问题无关,但我会更改
检查。ValidId(id)
带有具体的
用户ID
客户ID
VOs或统一的
实体ID
VO。另外,
DeactivatedData
在我看来是一个奇怪的建模概念。为什么不像
user.activationStatus=new-InactiveStatus(date)
或者甚至
user.status=new-InactiveStatus(date)
。您是否真的会让业务专家说,当
用户/客户的
停用数据
…此属性是否映射到您的用户实体?与您的问题无关,但我会更改
检查。ValidId(id)
带有具体的
用户ID
客户ID
VOs或统一的
实体ID
VO。另外,
DeactivatedData
在我看来是一个奇怪的建模概念。为什么不像
user.activationStatus=new-InactiveStatus(date)
或者甚至
user.status=new-InactiveStatus(date)
。你真的会让一位业务专家说,当一个
用户/客户的
停用数据时,
…太棒了,我同意你的看法,马克,但那会是对数据库的新调用,让我感到不舒服。为什么会是对数据库的新调用?您可以在将用户设置为Deactivated customer的同时执行此操作,或者在单独的表中停用列user和DeactivatedDateTime?在同一个表中停用DeactivatedUserId和DeactivatedDateTime。我正在使用存储库模式。我有一个复杂的类型,它有DeactivatedUserId和DeactivatedDateTime。如果我了解您的模型,那么同时更改这两个属性只需要调用一次数据库,使用DBContext SaveChanges,同一更新语句中的实体框架将更新数据库中的两列。查看您的代码,我认为这两列只需一次数据库调用即可更新。用Sql Server Profiler检查一下,如果只用一个调用就可以了真棒,我同意你的看法,Marc,但那将是对数据库的新调用,让我感到不舒服。为什么要对数据库进行新调用?您可以在将用户设置为Deactivated customer的同时执行此操作,或者在单独的表中停用列user和DeactivatedDateTime?在同一个表中停用DeactivatedUserId和DeactivatedDateTime。我正在使用存储库模式。我有一个复杂的类型,有DeactivatedUserId和DeactivatedDateTime。如果我很了解你的模型更改t