C# 让Dapper将日期时间指定为UTC,日期指定为本地
有很多关于如何做的故事 然而,当我们不关心事件的时间(比如“截止日期”)时,我的数据库实际上使用了C# 让Dapper将日期时间指定为UTC,日期指定为本地,c#,sql-server,datetime,dapper,C#,Sql Server,Datetime,Dapper,有很多关于如何做的故事 然而,当我们不关心事件的时间(比如“截止日期”)时,我的数据库实际上使用了Date数据类型。不幸的是,这会在C#中转换为UTCDateTime。这对日期选择器UI造成了一些破坏,对于跨时区的用户来说,它们似乎有着奇怪的行为 Dapper中是否有一种机制可以在Date字段转换为DateTime时捕获,并以不同方式设置DateTimeKind?或者强制特定的TypeHandler用于某些列?您可以做您想做的事情,但需要注意。您可以创建一个自定义的TypeHandler,但作为
Date
数据类型。不幸的是,这会在C#中转换为UTCDateTime
。这对日期选择器UI造成了一些破坏,对于跨时区的用户来说,它们似乎有着奇怪的行为
Dapper中是否有一种机制可以在
Date
字段转换为DateTime时捕获,并以不同方式设置DateTimeKind
?或者强制特定的TypeHandler用于某些列?您可以做您想做的事情,但需要注意。您可以创建一个自定义的TypeHandler,但作为要在C#中映射的类,DateTime将是一个DateTime
dapper,它已经有了自己的处理方法
在较旧的版本中,没有办法替换它们(我根据经验知道,我不得不修改dapper,因为我遇到了一个非常类似的情况),但是现在可以使用SqlMapper.RemoveTypeMap来删除映射,这样就可以删除DateTime映射并使用自定义的typehandler
警告:所有的日期时间都将由类型处理程序处理,然后必须确定反序列化的是日期
还是日期时间
,并对两者应用不同的逻辑,当您收到一个已经是日期时间
的对象时,有什么可能比较棘手