首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Dapper从MySql映射日期字段时的InvalidCastException

问使用Dapper从MySql映射日期字段时的InvalidCastException
EN

Stack Overflow用户
提问于 2012-07-30 00:45:06
回答 1查看 3K关注 0票数 4

我刚刚开始使用Dapper访问MySql数据库,在处理日期字段时似乎遇到了问题。每当我尝试映射MySql日期类型字段时,都会收到无效的强制转换。看起来MySql连接器返回了一个MySqlDateTime类型,这使得Dapper将其强制转换为一个对象,而不是日期时间。下面是相关的代码

我的模型上的属性定义

代码语言:javascript
复制
public DateTime PickupDate { get; set; }

MySql中的字段定义

代码语言:javascript
复制
PickupDate DATE

抛出异常

代码语言:javascript
复制
System.Data.DataException : Error parsing column 1 (PickupDate= - Object)
----> System.InvalidCastException : Specified cast is not valid.

我知道这一定是我遗漏了什么,有没有人可以给我指出正确的方向,让dapper将这个字段映射到DateTime数据类型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-30 21:32:30

答案是在连接字符串中将AllowZeroDateTime设置为false。在MySql连接字符串选项文档中找到了here。

如果设置为True,MySqlDataReader.GetValue()将为具有不允许的值的date或datetime列返回MySqlDateTime对象,并为有效值返回System.DateTime对象。如果设置为False (默认设置),则会导致为所有有效值返回System.DateTime对象,并为不允许的值抛出异常。

由于某些原因,即使有一个有效的日期,我也得到了MySqlDateTime类型而不是DateTime类型。将其更改为false会导致发生正确的行为。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11711016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档