EF Core 转 SQL group by date without time 无法转换为 SQL
使用 .NET 6 和 EF Core,我有以下代码:
var FileSizeMB_Grouped =
_db.FileSizeMBs.GroupBy(x => x.CreatedDate.Date);
我从中收到此错误:
无法翻译 LINQ 表达式“DbSet().GroupBy(x => x.CreatedDate.Date)”。以可翻译的形式重写查询,或者通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式切换到客户端计算。请参阅https://go.microsoft.com/fwlink/?linkid=2101038了解更多信息。
我知道原因,如果我使用 .AsEnumerable()
,它工作正常,因为无法转换为 SQL,但是...
有什么方法可以直接将其转换为 SQL 而不使用 AsEnumerable
或 RawSqlQuery
?
我读过很多这样的帖子:
- DbFunctions.TruncateTime LINQ 等价于 EF CORE < /一>
- <一href="https://stackoverflow.com/questions/9626348/how-to-compare-datetime-without-time-via-linq">如何通过 LINQ 比较没有时间的 DateTime?
但是...
- < code>.Date 属性 无法翻译
DbFunctions.TruncateTime
找不到Microsoft.EntityFrameworkCore.EF.Functions
找不到EF.Property
无法翻译(x.CreatedDate, "dt").Date
Using .NET 6 and EF Core, I have this code:
var FileSizeMB_Grouped =
_db.FileSizeMBs.GroupBy(x => x.CreatedDate.Date);
I get this error from it:
The LINQ expression 'DbSet().GroupBy(x => x.CreatedDate.Date)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
I know the reason, if I use .AsEnumerable()
, it works fine because can't be translated to SQL, but...
Is there any way to translate this to SQL directly without using AsEnumerable
or RawSqlQuery
?
I have read a lot of posts like these:
But...
.Date property
can't be translatedDbFunctions.TruncateTime
can't be foundMicrosoft.EntityFrameworkCore.EF.Functions
can't be foundEF.Property<DateTime>(x.CreatedDate, "dt").Date
can't be translated
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论