通过实体框架保存和获取DateTime - 两个日期都不同

时间:2017-03-22 15:52:05

标签: c# entity-framework datetime

我有一个单元测试,它执行以下步骤:

  1. 创建一个对象并设置一个DateTime属性
  2. 将此对象传递给存储库方法以进行保存
  3. 存储库方法使用AutoMapper将传递的对象映射到DAO
  4. 然后使用Entity Framework
  5. 保存DAO对象
  6. 返回已保存实体的ID
  7. 单元测试方法然后要求同一存储库上的另一个方法返回带有来自步骤5的ID的对象
  8. AutoMapper用于将此检索到的DAO实体传输到DTO
  9. 当返回的对象的DateTime与步骤1的对象上的相同属性进行比较时,偶尔 DateTime.Minutes属性与获取的实例不同1更高。换句话说,它是使用.Minutes= 23创建的,但是从数据存储中获取并且发现有.Minutes = 24
  10. 为什么?

    我还要补充一点,在DAO<> DTO映射期间,我们将DateTime.Kind设置为DateTimeKind.Local。这个动作真的会导致日期的值被修改吗?

    我的另一个怀疑是,我在某处读到T-SQL的datetime2可能会引入舍入差异。

    我可以理解,如果我要求数据库在NOW()字段上执行datetime2,可能会有所不同,但在这种情况下,日期是在第一步中指定的,不应该是之后发生了变异。

    我还能如何安全地测试在对象上设置DateTime属性,保存对象,然后获取对象并声明属性与我在开始时设置的DateTime完全相同?

0 个答案:

没有答案