#mysql #sql #asp.net-mvc #linq-to-entities
#mysql #sql #asp.net-mvc #linq-to-entities
Вопрос:
Я получаю сообщение об ошибке при использовании EntityFunctions.DiffMinutes() с MySQL. Ниже приведен мой код
верните db.Обнаружены устройства.Где(m => EntityFunctions.Разница в минутах ((DateTime)m.LastPollTime, DateTime.Сейчас) <= Время опроса amp;amp; m.Статус == истина).ToList();
эта функция принимает два объекта DateTime и возвращает разницу в минутах. это отлично работает в MSSQL, но показывает ошибку «DiffMinutes не существует» при использовании с MySQL.
Если я использую свой пользовательский или любой встроенный метод DateTime, то он выдает исключение «LINQ to Entities не распознает этот метод»
Я буду благодарен, если кто-нибудь поможет мне в этом
с уважением, Умайр Заман
Ответ №1:
Я думаю, возможно, MySQL не реализует эту функцию…
вы можете использовать другой способ, подобный этому:
DateTime begin = DateTime.Now - pollTime;
DateTime end = DateTime.Now pollTime;
var result = (from s in db.DiscoveredDevices where s.LastPollTime > begin amp;amp; s.LastPollTime < end amp;amp; amp;amp; s.Status == true select s).ToList();
return result;
Ответ №2:
Функция DiffMinutes не существует в MySQL, просто создайте ее и она будет работать:
CREATE FUNCTION `DiffMinutes`(timeValue1 datetime, timevalue2 datetime) RETURNS int(11)
DETERMINISTIC
BEGIN
RETURN TIMESTAMPDIFF(MINUTE, timeValue1, timevalue2);
END