Свободный NHibernate DateTime UTC - PullRequest
       14

Свободный NHibernate DateTime UTC

2 голосов
/ 12 марта 2012

Я хотел бы создать плавное отображение nhibernate для сопоставления поля DateTime следующим образом:

  1. При сохранении - сохранение значения UTC
  2. При чтении - настройка на локальноезначение часового пояса

Каков наилучший способ добиться этого сопоставления?

1 Ответ

2 голосов
/ 12 марта 2012

Лично я буду хранить дату в объекте в формате 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");
   }
}
...