微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – DbFunctions.TruncateTime在ASP .NET CORE中的LINQ等价物

我的.net应用程序中有以下功能LINQ

public ActionResult Index()
    {
        Dictionary<DateTime?,List<Event>> result;
        result = (from events in db.Events.Include("Activity")
                      where events.IsActive
                      group events by DbFunctions.TruncateTime(events.DateTimeFrom) into dateGroup
                      select new { EventDate = dateGroup.Key,Events = dateGroup.ToList() }).ToDictionary(x => x.EventDate,x => x.Events);

        return View(result);
    }

当我在ASP .NET CORE中使用它时,我不能使用DbFunctions.我如何重写它以使其在Microsoft.EntityFrameworkCore中工作?我正在使用sqlite,如果这有所作为.

解决方法

在EF6中使用DbFunctions.TruncateTime而不是DateTime.Date属性,因为由于某种原因,后者不受支持.

在EF Core中,不需要前者,因为现在可以正确识别和翻译DateTime.Date.

group events by events.DateTimeFrom.Date into dateGroup

遗憾的是,还没有支持的文档,所以作为一般的经验法则,总是尝试相应的CLR方法/属性(如果有的话)并检查它是否转换为sql以及如何.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐