2011-06-01 27 views
4

我正在使用MySQL数据库在ASP.NET MVC 3中工作,我已经设置了所有需求并且连接工作正常。下面这段代码是否正常工作,并产生正确的结果LINQ与ASP.NET MVC 3中的MySQL数据库,将DateTime存储到变量中

 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。任何解决这个问题的方法?

+0

你可以使用_db.Log属性来显示生成的SQL查询吗? – ChristiaanV 2011-06-01 06:28:02

+0

不幸的是,我不知道如何检查日志 – wijaya 2011-06-01 08:49:45

+0

您可以使用此链接查看如何使用Log属性。 http://mattberseth.com/blog/2008/01/profiling_linq_to_sql_using_th.html我非常好奇发生了什么,希望你可以用Log来追踪它。 – ChristiaanV 2011-06-01 09:04:48

回答

0

好吧,经过一番搜索和疯狂搜索之后,终于找到了解决我的问题的方法。实际上这不是一个解决方案,因为它看起来像MySQL Connector/Net 6.3.6对我的项目不太好(可能是因为我的服务器,数据库,项目配置等),所以我使用Devart dotConnector而不是MySQL Connector /净6.3.6和一切工作像魔术。 :D

2

这似乎是您使用的MySql的Linq to SQL提供程序的问题。 在第一种情况下,日期部分位于从您的linq查询生成的表达式树中,在第二种情况下,DateTime被声明在Linq查询的外侧,因此生成的表达式树将与第一种情况不同。现在,它依赖于Linq to SQL提供程序中表达式树的解析器如何处理这两种情况,在这种情况下,提供程序似乎无法正确处理第二种情况表达式树。

相关问题