Orm 如何配置PetaPoco以创建DateTimeKind.Unspecified而不是UTC类型的DateTimes?

Orm 如何配置PetaPoco以创建DateTimeKind.Unspecified而不是UTC类型的DateTimes?,orm,subsonic,petapoco,Orm,Subsonic,Petapoco,我要把一个亚音速项目转移到PetaPoco。当亚音速从数据库中提取DateTime列时,它将DateTime返回为DateTimeKind.Unspecified。当PetaPoco将POCO水合物化时,它将日期时间设置为UTC TopTen Software的网站上实际上有一篇博客文章提到了这个问题: 但有一条注释指出,概述的解决方案已经过时,并链接到另一篇提到mappers的文章。我不知道如何向解决方案中添加映射器来解决此问题。如果将此属性添加到POCO对象的DateTime属性中,它将为

我要把一个亚音速项目转移到PetaPoco。当亚音速从数据库中提取DateTime列时,它将DateTime返回为DateTimeKind.Unspecified。当PetaPoco将POCO水合物化时,它将日期时间设置为UTC

TopTen Software的网站上实际上有一篇博客文章提到了这个问题:


但有一条注释指出,概述的解决方案已经过时,并链接到另一篇提到mappers的文章。我不知道如何向解决方案中添加映射器来解决此问题。

如果将此属性添加到POCO对象的DateTime属性中,它将为您将DateTimeKind设置为UTC(但不会进行任何转换)

为了找到这个,我们必须从源头上挖掘

为了实际转换为UTC,我修改了PetaPoco:

PetaPoco.cs-Ln 3738

更改此项:

return delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Utc); };
为此:

return delegate(object src) { return new DateTime(((DateTime)src).ToUniversalTime().Ticks, DateTimeKind.Utc); };
我才意识到你的要求正好相反。我必须进行这些更改以使其返回正确的UTC日期。您可以修改PetaPoco以使用此代码执行相反的操作:

return delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Unspecified); };
return delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Unspecified); };