c# - 使用 Dapper 从 MySql 映射日期字段时出现 InvalidCastException

标签 c# .net mysql dapper

我刚刚开始使用 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 数据类型的正确方向吗?

最佳答案

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

If set to True, MySqlDataReader.GetValue() returns a MySqlDateTime object for date or datetime columns that have disallowed values, such as zero datetime values, and a System.DateTime object for valid values. If set to False (the default setting) it causes a System.DateTime object to be returned for all valid values and an exception to be thrown for disallowed values, such as zero datetime values.

出于某种原因,即使日期有效,我得到的是 MySqlDateTime 类型而不是 DateTime。将此更改为 false 会导致发生正确的行为。

关于c# - 使用 Dapper 从 MySql 映射日期字段时出现 InvalidCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11711016/

相关文章:

c# - Entity Framework 4 中的简单条件 LINQ 查询

mysql - Mysql表水平排序

mysql - MySql说:无法连接:无效的设置等等

c# - 如何验证 string.Format 方法的格式

.net - 使用正则表达式查找查询中的所有表名

c# - 在 Azure 上使用 Codedom/CSharpCodeProvider 进行动态编译

c# - XML url 中的 & 符号未通过

mysql - Django——由于 MySQL 连接不良导致 SyncDB 和 South 迁移失败

c# - 如何正确使用 LogonUser 从工作组客户端模拟域用户

c# - WPF 绑定(bind)源