Linq с базой данных MySQL в ASP.NET MVC 3, хранящей DateTime в переменную - PullRequest
4 голосов
/ 01 июня 2011

Я использую базу данных MySQL для работы в ASP.NET MVC 3, я уже установил все требования и соединение работает нормально. Этот код ниже работает правильно и дает правильный результат :

        try
        {
            ViewBag.Model = (from n in _db.mainDatas
                             where n.time_stamp == new DateTime(2010, 11, 3, 0, 0, 15) 
                             select n).Take(10).ToList();
        }catch (Exception e) {
            ViewBag.Error = e;
        }

Но когда я изменяю этот код на:

        DateTime test = new DateTime(2010,11,3,0,0,15);
        try
        {
            ViewBag.Model = (from n in _db.mainDatas
                             where n.time_stamp == test  
                             select n).Take(10).ToList();
        }catch (Exception e) {
            ViewBag.Error = e;
        }

это сообщение об ошибке генерируется:

MySql.Data.MySqlClient.MySqlException: неустранимая ошибка при выполнении команды. ---> MySql.Data.MySqlClient.MySqlException: невозможно сериализовать значение даты / времени

Я использую MySQL, Connector / Net 6.3.6. Любое решение этой проблемы?

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Кажется, это проблема с провайдером Linq to SQL для MySql, который вы использовали.В первом случае часть даты находится «в» дереве выражений, которое генерируется из вашего запроса linq, где, как и во втором случае, DateTime объявляется вне запроса Linq, и, следовательно, сгенерированное дерево выражений будет отличаться от первого случая.Теперь от синтаксического анализатора дерева выражений в поставщике Linq to SQL зависит, как обрабатывать оба случая, и кажется, что в этом случае провайдер не может правильно обработать второе дерево выражений наблюдений.

0 голосов
/ 15 июня 2011

Ладно, после некоторых поисков и поисков, как сумасшедших, я наконец нашел решение своей проблемы. Ну, на самом деле это не решение, потому что похоже, что MySQL Connector / Net 6.3.6 не очень хорошо работает с моим проектом (возможно, из-за моего сервера, базы данных, конфигурации проекта и т. Д.), Поэтому я использую Devart dotConnector вместо MySQL Connector / Нет 6.3.6 и все работает как по волшебству. : D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...