我刚刚开始使用Dapper访问MySql数据库,在处理日期字段时似乎遇到了问题。每当我尝试映射MySql日期类型字段时,都会收到无效的强制转换。看起来MySql连接器返回了一个MySqlDateTime类型,这使得Dapper将其强制转换为一个对象,而不是日期时间。下面是相关的代码
我的模型上的属性定义
public DateTime PickupDate { get; set; }MySql中的字段定义
PickupDate DATE抛出异常
System.Data.DataException : Error parsing column 1 (PickupDate= - Object)
----> System.InvalidCastException : Specified cast is not valid.我知道这一定是我遗漏了什么,有没有人可以给我指出正确的方向,让dapper将这个字段映射到DateTime数据类型?
发布于 2012-07-30 21:32:30
答案是在连接字符串中将AllowZeroDateTime设置为false。在MySql连接字符串选项文档中找到了here。
如果设置为True,MySqlDataReader.GetValue()将为具有不允许的值的date或datetime列返回MySqlDateTime对象,并为有效值返回System.DateTime对象。如果设置为False (默认设置),则会导致为所有有效值返回System.DateTime对象,并为不允许的值抛出异常。
由于某些原因,即使有一个有效的日期,我也得到了MySqlDateTime类型而不是DateTime类型。将其更改为false会导致发生正确的行为。
https://stackoverflow.com/questions/11711016
复制相似问题