У меня есть база данных Access, которую я запрашиваю с помощью Entity Framework (v6.4.0). Теперь мне нужно получить последнюю дату для данного дня недели (например, последнюю дату, введенную для пятницы).
Запрос SQL выглядит следующим образом:
SELECT MAX(Datum) AS LastDate
FROM MyTable
WHERE WEEKDAY(Datum) = WEEKDAY(dateToCheck)
Здесь dateToCheck
содержит день, который я ищу. Но я не могу перевести его на EF для MS Access. Я пробовал SqlFunctions.DatePart("weekday", date)
, но он работает только для SQL, а не для доступа. Поэтому следующий код не работает для базы данных Access
await context.MyTable.Where(x => SqlFunctions.DatePart("weekday", x.Datum) == (int)dateToCheck.DayOfWeek)
.MaxAsync(x => x.Date)
. Выдает NotSupportedException с сообщением:
Указанный метод 'System.Nullable 1[System.Int32] DatePart(System.String, System.Nullable
1 [System.DateTime]) 'для типа' System.Data.Entity.SqlServer.SqlFunctions 'нельзя преобразовать в выражение хранилища LINQ to Entities.
Есть ли функция, которая работает для Доступ к БД?
ПРИМЕЧАНИЕ. Это старая база данных MS Access 2003, если это имеет значение. И я использую JetEntityFrameworkProvider в качестве поставщика данных.