Tar*_*lba 12 linq sqlite entity-framework-core
我的.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);
}
Run Code Online (Sandbox Code Playgroud)
当我在ASP .NET CORE中使用它时,我不能使用DbFunctions.我如何重写它以使其在Microsoft.EntityFrameworkCore中工作?我正在使用SQLite,如果这有所作为.
Iva*_*oev 37
在EF6 DbFunctions.TruncateTime中使用而不是DateTime.Date属性,因为由于某种原因,后者不受支持.
在EF Core中,前者不需要简单,因为DateTime.Date现在可以正确识别和翻译.
group events by events.DateTimeFrom.Date into dateGroup
Run Code Online (Sandbox Code Playgroud)
遗憾的是,还没有支持的文档,所以作为一般的经验法则,总是尝试相应的CLR方法/属性(如果有的话)并检查它是否转换为SQL以及如何.
在 ASP.NET CORE 中使用 DbFunctions 您必须创建一个对象。
var DbF = Microsoft.EntityFrameworkCore.EF.Functions;
Run Code Online (Sandbox Code Playgroud)
现在您可以轻松使用它。
var now = DateTime.Now;
int count = db.Tbl.Count(w => DbF.DateDiffDay(now, w.RegisterDate) <= 3);
Run Code Online (Sandbox Code Playgroud)
github上的更多细节
EF Core 尚不支持 DbFunction。但是您可以使用“原始 Sql 查询”。
您可以在此处找到“原始 Sql 查询”的文档
您还可以在此处跟踪EF Core 的 DbFunctions
| 归档时间: |
|
| 查看次数: |
9621 次 |
| 最近记录: |