Asp.net core 使用EntityFramework Core和linq to entities在服务器端将日期与今天进行比较
我正在尝试将一些代码从EF6翻译成EFCore1RC1,但在服务器端使用linq时,我需要将日期与当前日期进行比较。查询的另一部分是获取这些日期的星期几 EF6代码使用的SqlFunctions类完全限定为System.Data.Entity.SqlServer.SqlFunctions,afaik尚未移植到新版本 建议采用什么方法或替代方法来保持EF Core的运行 原始linq to entities查询如下所示:Asp.net core 使用EntityFramework Core和linq to entities在服务器端将日期与今天进行比较,asp.net-core,entity-framework-core,Asp.net Core,Entity Framework Core,我正在尝试将一些代码从EF6翻译成EFCore1RC1,但在服务器端使用linq时,我需要将日期与当前日期进行比较。查询的另一部分是获取这些日期的星期几 EF6代码使用的SqlFunctions类完全限定为System.Data.Entity.SqlServer.SqlFunctions,afaik尚未移植到新版本 建议采用什么方法或替代方法来保持EF Core的运行 原始linq to entities查询如下所示: var result = db.Logs.Select(log =>
var result = db.Logs.Select(log => new {
Date = log.Date,
Rel = System.Data.Entity.SqlServer.SqlFunctions.DateDiff("day", log.Date, System.Data.Entity.SqlServer.SqlFunctions.GetDate()),
Dow = System.Data.Entity.SqlServer.SqlFunctions.DatePart("dw", log.Date) - 1
});
目前,Sql函数不受支持,这是一个公开的问题 以下是一些您可以尝试的替代方案:
- 您可以尝试使用原始sql
- 否则,您可以在db端创建计算列,并
repository.GroupBy(x=>dbContext.DatePart(“week”,x.CreatedAt));
更多信息:您能告诉我目前的情况吗?这张罚单现在已经打开,但可能是通过其他方式解决的?这不是只有在EF Core 3.1中才有可能,它仍然是一个预览版吗?不,在EF Core 2.x中,它是可能的,在EF 3.0中,有一个问题在3.1中得到了修复: