实体框架在转换为兼容性 130 时无法与 DateTime 列正常工作



下面的代码适用于SQL Server兼容级别100。 但是,更新到 130,开始使下面的代码失败。 我相信这与日期时间和精度有关。 该项目不再被删除。任何线索为什么以及是否有解决方法。我们想在 130 级别使用一些新功能。

_gameJobsRepository.Delete(q => q.GameId == gameJob.GameId && q.DateCreated <= gameJob.DateCreated);

这是兼容级别 130+ 中的 EF6 和 SQL Server 2016+ 的已知问题。 SQL Server 引入了一个重大更改,它破坏了 EF6。

解决方法是

  • 保持兼容级别 120
  • 将所有datetime列更改为datetime2
  • 保留所有datetime列并使用命令拦截器更改参数类型(请参阅 github 问题)
  • 迁移到 EF Core

此外,这可能会在 EF 6.3 中得到解决,但没有承诺,因为如果不引入重大更改,它看起来需要修复一些工作。

最新更新