asp.net-core - 使用EntityFramework Core和linq对实体在服务器端比较今天的日期

标签 asp.net-core entity-framework-core

我正在尝试将一些代码从EF6转换为EF Core 1 RC1,而我被困在需要使用linq在服务器端将日期与当前日期进行比较的时候。查询的另一部分是获取这些日期的星期几。
EF6代码使用SqlFunctions类,该类完全符合System.Data.Entity.SqlServer.SqlFunctions的要求,但afaik尚未移植到新版本。
建议采用什么方法或将其保持在EF Core上的替代方法?
原始linq to实体查询如下所示:

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 Functions,这是 Unresolved 问题

Provide standard LINQ methods that correspond to standard SQL operations (something like DbFunctions from EF6)

您可以尝试以下替代方法:

  • 您可以尝试使用context.set().FromSql("...")使用原始sql。
  • 否则,您可以在数据库端和mark these columns as generated in the EF model
  • 上创建计算的列

    关于asp.net-core - 使用EntityFramework Core和linq对实体在服务器端比较今天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553834/

    相关文章:

    c# - 如何在 ASP.NET Core 中使用 IAsyncAuthorizationFilter 进行依赖注入(inject)

    c# - EF Core 中是否有唯一约束的数据注释(代码优先)?

    c# - ASP.NET Core 在 Controller 构造函数中访问 User.Identity

    c# - 实现接口(interface)的实体的通用配置

    c# - 密码保护数据库

    c# - ActionFilter 返回带有消息的 Http 状态代码

    asp.net-core - 如何在 .Net Core Web API 中完全消除 COR 错误?

    azure-devops - 如何使用 VSTS 部署运行 EF Core 迁移到 Azure for Web API 项目

    visual-studio - 如何使用 Visual Studio 2019 在 Docker 容器中运行 ASP.NET Core 3.1 项目?

    c# - .NET 6 在 Web API 项目 Controller 中使用 HTTP 客户端进行 API 调用