C# 未将where子句中带DateTime.Add()的EntityFramework核心2.1 linq查询转换为SQL
我需要将两列中的两个DateTime值合并为一个DateTime值。第一个保存日期部分,第二个保存时间部分。现在,我想获取日期并将时间添加到其中,以便使用它根据参数对其进行适当过滤 我这里的问题是,我无法将组合转换为SQL,从而在SQL Server而不是客户端上执行 到目前为止我所尝试的:C# 未将where子句中带DateTime.Add()的EntityFramework核心2.1 linq查询转换为SQL,c#,sql,linq-to-sql,entity-framework-core,C#,Sql,Linq To Sql,Entity Framework Core,我需要将两列中的两个DateTime值合并为一个DateTime值。第一个保存日期部分,第二个保存时间部分。现在,我想获取日期并将时间添加到其中,以便使用它根据参数对其进行适当过滤 我这里的问题是,我无法将组合转换为SQL,从而在SQL Server而不是客户端上执行 到目前为止我所尝试的: 在下面的列表中,“ColumnA”是带有日期部分值的第一列,“ColumnB”是带有时间部分的第二列。“DateParameter”是要检查的注入参数 1) .Where(a => (a.Column
在下面的列表中,“ColumnA”是带有日期部分值的第一列,“ColumnB”是带有时间部分的第二列。“DateParameter”是要检查的注入参数
1) .Where(a => (a.ColumnA.Date + a.ColumnB.TimeOfDay) <= DateParameter);
1).其中(a=>(a.ColumnA.Date+a.ColumnB.TimeOfDay)(a.ColumnA.Date.Add(a.ColumnB.TimeOfDay))(a.ColumnA.Date.AddHours(a.ColumnB.Hour).AddMinutes(a.ColumnB.Minute).AddSeconds(a.ColumnB.Second))(新的日期时间(a.ColumnA.Year,a.ColumnB.Month,a.ColumnB.Day,a.Hour,a.ColumnB.Minute,a.Second)(3)对我有效(EF Core 3.1.3,SqlServer)EF Core 2.1不会得到任何增强,因此您必须使用支持的功能-EF Core 3.1中的DateTime
错误仍在修复中。升级到EF Core 3.1.4。现在我遇到了一个例外,即某些部分不受支持或查询无法完全翻译,我应该明确切换到客户端评估。特别是datepart值“hour”不受支持,它是“DateTime.AddHour()”的SQL等价物(3)适用于我(EF Core 3.1.3,SqlServer)EF Core 2.1不会得到任何增强,因此您必须使用支持的功能-EF Core 3.1中的DateTime
错误仍在修复中。升级到EF Core 3.1.4。现在我遇到了一个例外,即某些部分不受支持或查询无法完全翻译,我应该明确切换到客户端评估。具体而言,不支持datepart值“hour”,它是“DateTime.AddHour()”的SQL等价物。
2) .Where(a => (a.ColumnA.Date.Add(a.ColumnB.TimeOfDay)) <= DateParameter);
3) .Where(a => (a.ColumnA.Date.AddHours(a.ColumnB.Hour).AddMinutes(a.ColumnB.Minute).AddSeconds(a.ColumnB.Second)) <= DateParameter);
4) .Where(a => (new DateTime(a.ColumnA.Year, a.ColumnA.Month, a.ColumnA.Day, a.ColumnB.Hour, a.ColumnB.Minute, a.ColumnB.Second)) <= DateParameter);