我正在(有点)深入使用 NHibernate 的流畅界面进行自动映射。非常好的事情,但我在使用 DateTimes 时遇到了一个小问题。我需要将数据格式更改为时间戳,否则 NHibernate 会截断毫秒。
我找到了几个信息来源,最好的一个是: AutoMapping Info 1,他正在更改属性的列名和类型。问题是,根据本文档,流畅的自动映射发生了变化。
现在我不知道如何让自动映射“更改类型”。我尝试了以下代码,但我被卡住了。同样,我想做的只是告诉自动映射器:
使用 DateTime 的时间戳可防止在使用自动映射时截断毫秒。
有人有想法吗?到目前为止的代码:
public class DateTimeToTimestamp : IClassConvention
{
public bool Accept(IClassMap target)
{
return target.GetType() == typeof(DateTime);
}
public void Apply(IClassMap target)
{
throw new NotImplementedException();
}
}
好的,非常感谢您的回答...那样对我来说已经足够舒适了。如果我真的有 3 个类需要这种精度,我可以写三遍。特别是因为所有其他属性的映射仍然完美,并且以下代码仅替换我想要的一个属性......非常好!
如果有人知道更通用的方法,请随时添加,但现在,我很高兴!
我的案例代码是:
public class DateTimeToTimestamp : IAutoMappingOverride<CustomTime>
{
public void Override(AutoMap<CustomTime> mapping)
{
mapping.Map(x => x.ScanDate).CustomTypeIs("timestamp");
}
}