流利的NHibernate日期时间UTC

时间:2012-03-12 16:25:33

标签: c# nhibernate fluent-nhibernate mapping fluent-nhibernate-mapping

我想创建一个流畅的nhibernate映射,以下列方式映射DateTime字段:

  1. 保存时 - 保存UTC值
  2. 读取时 - 调整为当地时区值
  3. 实现此映射的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

就个人而言,我会将日期存储在UTC中的对象中,然后在读取/写入时在对象内进行转换。然后,您可以引用属性在映射中使用的支持字段(它不像这样“流畅”,但您可以使用FluentNH来映射它)。如果UTC值在代码中可能对您有价值,那么只需公开它。

public class MyClass
{
   ...

   //Don't map this field in FluentNH; this is for in-code use
   public DateTime MyDate 
   {
      get{return MyDateUTC.ToLocalTime();} 
      set{MyDateUTC = value.ToUniversalTime();}
   }

   //map this one instead; can be private as well
   public DateTime MyDateUTC {get;set;} 
}

...

public class MyClassMap:ClassMap<MyClass>
{
   public MyClassMap()
   {
      Map(x=>x.MyDateUTC).Column("MyDate");

      //if you made the UTC property private, map it this way instead:
      Map(Reveal.Member<DateTime>("MyDateUTC")).Column("MyDate");
   }
}