Обновленный ответ (EF Core):
Согласно эта ссылка , DbFunctions
в настоящее время не поддерживается в EF Core.
Если вы хотите вызвать AddHour
с помощью EF Core, один из вариантов - определить AddHour
как скалярную функцию в вашей БД, а затем вызвать ее в своем запросе LINQ.
Этот документ объясняет, как это можно сделать:
Объявите статический метод в вашем DbContext и аннотируйте его с помощью DbFunctionAttribute
:
public class MyDbContext : DbContext
{
[DbFunction]
public static int AddHours(DataTime source, int hours)
{
// don't need any implementation
throw new Exception();
}
}
Подобные методы автоматически регистрируются. После регистрации вызовы метода в запросе LINQ могут быть преобразованы в вызовы функций в SQL:
items = items.Where(i =>
MyDbContext.AddHours(i.DateCreated, i.DateCreated.Offset.Hours) >= startDate.Value);
Оригинальный ответ (EF 4/5/6):
AddHour
не является функцией в вашей БД. Его необходимо преобразовать в соответствующую функцию в БД.
Если вы используете SQL Server, вы можете использовать этот код, который переведет AddHour
в соответствующую функцию БД:
items = items.Where(i =>
DbFunctions.AddHour(i.DateCreated, i.DateCreated.Offset.Hours) >= startDate.Value);
Если вы не используете SQL Server, вам нужно определить функцию AddHour
в вашей БД, после определения которой вы можете использовать DbFunctions.AddHour
для ее вызова.