c# - Fluent NHibernate 日期时间 UTC

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

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

  1. 保存时 - 保存 UTC 值
  2. 读取时 - 调整为本地时区值

实现此映射的最佳方法是什么?

最佳答案

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

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

关于c# - Fluent NHibernate 日期时间 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670906/

相关文章:

c# - Fluent NHibernate AutoMapping,应该可以节省时间,但这让我很抓狂

c# - NHibernate:删除的对象将被级联重新保存。替换对象并删除旧对象

c# - 正则表达式号码电话

sql - NHibernate Profiler 无法连接到 session 和记录

c# - Nhibernate 查询具有多个获取和多个条件

c# - NHibernate 演示文稿的一个很好的示例域是什么?

c# - 递归贝塞尔曲线算法在 C# 中不起作用

c# - Websphere MQ 7.0.1 C# XMS 连接导致 10054 (X'2746') tcp 错误

c# - .Net 框架 mscorpe.dll 错误

c# - 你如何映射一个组件,它也是 NHibernate hbm xml 中的主键(或在 fluent-nhibernate 类映射中)?