[英]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.