Поддержка EntityFunctions в MySQL

#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