[英]Dapper is converting my dates into 01-Jan-01 and I cannot see why?
我正在使用SQL Server 2012和Dapper v1.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; }
}
而Dapper的调用是:
DbContext.Execute($"[{Schema}].[usp_ImportingQueue_FinaliseImport]", storedProcParams, aCommandType: CommandType.StoredProcedure)
但是,当我查看OzCsImportingLogsTableModel.CreationTime
,该值始终为01-Jan-01 00:00:00
,指示该值为NULL。
我不明白 有人可以在这里向我指出正确的方向吗?
@John的评论正确。 财产(这里的名称CreationDateTime
)通常必须列的名称(这里匹配CreationTime
)。 话虽如此,它实际上不是表列的名称,而是结果列的名称,因此您可以执行以下操作:
SELECT CreationTime as CreationDateTime, ...
是否可以修改实际查询。
正如@fstam所评论的:行为是01-jan-01是DateTime的默认值,并且由于它是不可为null的类型,并且从来没有被dapper设置为任何值,因此它是显示的值。
//偏好顺序为:下划线完全匹配,错误大小写完全匹配,常规字段后备字段,match-exc下划线匹配match-inc-下划线
对于您而言,以上都不适用; 最好在代码中调整属性的名称。
更新:
我刚刚看到的另一件事:模式中的DurationMs
列可以为空,而DurationMs
属性则不能为空。 您可能想将此属性定义为public int? DurationMs { get; set; }
public int? DurationMs { get; set; }
public int? DurationMs { get; set; }
。 (我尚未检查所有成员)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.