EF 将加载不同的 DateTime 值

问题描述

我的域模型 DateTime 属性在直接加载和聚合根加载时不会保持相同的值。

直接加载

_dbcontext.Set<OrderLine>()
  .ToList()

通过 1:m 集合中的聚合根加载

_dbcontext.Set<Order>()
  .Include(x => x.OrderLine)
  .ToList()

问题是,当 EF 加载图形时,它将在单个 sql 中将不同的实体连接在一起。 OrderLine datetime 列将在 Order 行中定义为 NULL datetime2

CAST(NULL AS datetime2)

单独加载 OrderLine 时不会发生这些强制转换(它们不应该发生)

由于日期时间在数据库中被强制转换为 datetime2,因此 EF 框架会将其转换为具有更高进动的日期时间。这是使用两种不同方法加载时 OrderLine.OrderDate 的屏幕截图。

enter image description here

我正在使用 EF6.2“模型优先”和 sql Server 数据类型“datetime”并且无法更改(无法升级到 datetime2)

我试过了

modelBuilder.Entity().Property(x => x.OrderDate).HasPrecision(3);

.. 但这没有效果

也许我可以强制 EF 在不加入的情况下加载图表?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)