C# Dapper正在将我的日期转换为01-Jan-01,我不明白为什么?

C# Dapper正在将我的日期转换为01-Jan-01,我不明白为什么?,c#,.net,dapper,C#,.net,Dapper,我正在使用SQLServer2012和DapperV1.50.5 我有一个标准查询: SELECT * FROM [TsData].[ImportingLogs] WHERE ImportContextGuid = '{3c19d706-0895-49e4-b96c-38eb6a3cc579}' 返回一些数据: 我感兴趣的CreationTime列具有有效的日期时间 该表的定义如下: POCO是: public class OzCsImportingLogsTableModel {

我正在使用SQLServer2012和DapperV1.50.5

我有一个标准查询:

SELECT * 
FROM [TsData].[ImportingLogs] 
WHERE ImportContextGuid = '{3c19d706-0895-49e4-b96c-38eb6a3cc579}'
返回一些数据:

我感兴趣的
CreationTime
列具有有效的日期时间

该表的定义如下:

POCO是:

public class OzCsImportingLogsTableModel
{
    public DateTime CreationDateTime { get; set; }
    public int? CreatorUserId { get; set; }
    public int? DeleterUserId { get; set; }
    public DateTime DeletionTime { get; set; }
    public int DurationMs { get; set; }
    public int Id { get; set; }
    public Guid ImportContextGuid { get; set; }
    public bool IsDeleted { get; set; }
    public DateTime? LastModificationTime { get; set; }
    public int? LastModifierUserId { get; set; }
    public string Message { get; set; }
    public OzCsImportManagerMessageKindEnum MessageKindId { get; set; }
    public string Source { get; set; }
    public string StructuredData { get; set; }
    public string Tags { get; set; }
}
而简洁的电话是:

DbContext.Execute($"[{Schema}].[usp_ImportingQueue_FinaliseImport]", storedProcParams, aCommandType: CommandType.StoredProcedure)
但是,当我查看
OzCsImportingLogsTableModel.CreationTime
时,该值总是
01-Jan-01 00:00:00
,这表示该值为空


我不明白。有人能在这里给我指一下正确的方向吗?

@John的评论是正确的。属性的名称(此处
CreationDateTime
)通常必须与列的名称匹配(此处
CreationTime
)。话虽如此,它实际上不是表列的名称,而是结果列的名称,因此您可以这样做:

SELECT CreationTime as CreationDateTime, ...
如果可以修改实际查询

正如@fstam所评论的:行为是01-jan-01是DateTime的默认值,因为它是不可为null的类型,并且从不由dapper设置为任何值,所以它是显示的值

请注意,用于查找列名成员的逻辑可用:

//优惠次序如下: 精确匹配超过下划线匹配,精确 大小写超过错误大小写,支持字段超过常规字段, match inc下划线超过match exc下划线

然而,在您的情况下,上述任何一项均不适用;最好在代码中调整属性的名称

更新:

我刚才看到的另一件事是:模式中的
DurationMs
列可以为空,但
DurationMs
属性不能为空。您可能需要定义 将此属性设置为
public int?而是DurationMs{get;set;}

(我没有检查所有成员)。

这是因为您的数据库字段是
CreationTime
,并且您的模型属性是
CreationDateTime
?免责声明:我从未使用过Dapper。对behavoir的进一步解释是01-jan-01是DateTime的默认值,因为它是不可为null的类型,并且Dapper从未将其设置为任何值,所以它是显示的值。