我想创建一个流畅的nhibernate映射,以下列方式映射DateTime字段:
实现此映射的最佳方法是什么?
答案 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");
}
}