下面的代码适用于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 中得到解决,但没有承诺,因为如果不引入重大更改,它看起来需要修复一些工作。