gpt4 book ai didi

mysql - Entity Framework 6 - DbFunctions.AddHours 错误

转载 作者:行者123 更新时间:2023-11-30 22:06:17 24 4
gpt4 key购买 nike

我有一项任务是在特定时间段内获取一组实体。我正在使用代码优先方法和 MySql 服务器。

代码

IQueryable<Entity> query = dbContext.Set<Entity>().AsNoTracking();

Entity[] entities = (from e in query
let last = (from ee in query orderby ee.Id descending select ee).FirstOrDefault()
where e.Timestamp >= DbFunctions.AddHours(last.Timestamp, -hours)
select e).ToArray();

以及由 EF 6.1.3 生成的以下 SQL

SELECT
`Extent1`.`Id`,
`Extent1`.`Timestamp`
FROM `Entities` AS `Extent1` LEFT OUTER JOIN (SELECT
`Extent2`.`Id`,
`Extent2`.`Timestamp`
FROM `Entities` AS `Extent2`
ORDER BY
`Extent2`.`Id` DESC LIMIT 1) AS `Limit1` ON 1 = 1
WHERE `Extent1`.`Timestamp` >= (AddHours(`Limit1`.`Timestamp`, -(@p__linq__0)))

我遇到了一个错误

Failed in 6 ms with error: FUNCTION mydb.AddHours does not exist

事实上,我在数据库端还没有这个功能。有人知道那些 DbFunctions 是如何工作的吗?

UPD

类似问题

EntityFramework 6.1.3 and MySQL DbFunctions.TruncateTime does not exist?

how to use canonical functions in Entity Framework and Mysql

最佳答案

目前的解决方法 - 只是在 DbInitializer 中添加了函数的实现

CREATE FUNCTION AddHours(timeValue datetime, addValue int) RETURNS datetime
RETURN DATE_ADD(timeValue, INTERVAL addValue HOUR);

关于mysql - Entity Framework 6 - DbFunctions.AddHours 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com