Dapper returns 01-01-0001 00:00:00 来自 MySQL DATETIME
Dapper returns 01-01-0001 00:00:00 from MySQL DATETIME
我无法让 Dapper 与 MySQL 数据库 DATETIME
类型一起工作。对于 DATETIME
列,它总是 returns "01-01-0001 00:00:00"
。以下是一些详细信息:
.NET:
DNX 4.5.1
MysqlData 6.9.8
Dapper - 1.50.0-beta6
MySQL: Server Version: 5.5.43-0+deb8u1
Table:
CREATE TABLE campaign (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
...
creation_date datetime DEFAULT NULL,
last_modified datetime DEFAULT NULL,
...
)
ENGINE = INNODB
C#:
public class Campaign
{
public int Id { get; set; }
public DateTime CreationDate {get; set; }
public DateTime LastModified { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
...
const string myConnectionString = "server=[IP];uid=[usr];pwd=[pass];database=[db];AllowZeroDatetime=false;";
try
{
_conn = new MySqlConnection { ConnectionString = myConnectionString };
_conn.Open();
}
...
public Dictionary<int, Campaign> GetCampaigns()
{
var campaignsDict = _conn.Query<Campaign>("select * from campaign").ToDictionary(row => row.Id,row => row);
return campaignsDict;
}
这就是检索到的行在 campaignsDict 中的样子:
P.S。我刚学 .NET,所以我对这门技术一窍不通。
Dapper 不会自动删除下划线,除非被告知这样做,通过:
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
所以您在这里实际拥有的是尚未从列映射的属性。 a DateTime
的默认值为:01-01-0001 00:00:00.
选项:
- 启用下划线匹配
- 为查询中的列设置别名以匹配属性
- 更改属性以匹配数据库列
- 编写自定义类型映射
更改您的模型,使日期列是可选的,如下所示:
public class Campaign
{
public int Id { get; set; }
public DateTime? CreationDate {get; set; }
public DateTime? LastModified { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
}
我无法让 Dapper 与 MySQL 数据库 DATETIME
类型一起工作。对于 DATETIME
列,它总是 returns "01-01-0001 00:00:00"
。以下是一些详细信息:
.NET:
DNX 4.5.1
MysqlData 6.9.8
Dapper - 1.50.0-beta6
MySQL: Server Version: 5.5.43-0+deb8u1
Table:
CREATE TABLE campaign (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
...
creation_date datetime DEFAULT NULL,
last_modified datetime DEFAULT NULL,
...
)
ENGINE = INNODB
C#:
public class Campaign
{
public int Id { get; set; }
public DateTime CreationDate {get; set; }
public DateTime LastModified { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
...
const string myConnectionString = "server=[IP];uid=[usr];pwd=[pass];database=[db];AllowZeroDatetime=false;";
try
{
_conn = new MySqlConnection { ConnectionString = myConnectionString };
_conn.Open();
}
...
public Dictionary<int, Campaign> GetCampaigns()
{
var campaignsDict = _conn.Query<Campaign>("select * from campaign").ToDictionary(row => row.Id,row => row);
return campaignsDict;
}
这就是检索到的行在 campaignsDict 中的样子:
P.S。我刚学 .NET,所以我对这门技术一窍不通。
Dapper 不会自动删除下划线,除非被告知这样做,通过:
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;
所以您在这里实际拥有的是尚未从列映射的属性。 a DateTime
的默认值为:01-01-0001 00:00:00.
选项:
- 启用下划线匹配
- 为查询中的列设置别名以匹配属性
- 更改属性以匹配数据库列
- 编写自定义类型映射
更改您的模型,使日期列是可选的,如下所示:
public class Campaign
{
public int Id { get; set; }
public DateTime? CreationDate {get; set; }
public DateTime? LastModified { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
}