Domanda

vorrei creare una mappatura di nibernate fluente per mappare un campo DateTime in un modo seguente:

    .
  1. su Salva - Salva il valore UTC
  2. su lettura - Regola al valore del fuso orario locale
  3. Qual è il modo migliore per ottenere questa mappatura?

È stato utile?

Soluzione

Personalmente, memorizzerei la data nell'oggetto in UTC, quindi convertire nell'oggetto durante la lettura / scrittura.Puoi quindi fare riferimento al campo di supporto La tua proprietà utilizza nella mappatura (non è come "fluente" per farlo in questo modo, ma puoi usare fluentnh per mappare questo).Se il valore UTC potrebbe avere valore in codice in codice, quindi esporlo.

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");
   }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top