Chr*_*ert 4 c# nhibernate fluent-nhibernate automapping
我正在(通过NHibernate的流畅界面)深入了解自动化.非常好,但我遇到了DateTimes的一个小问题.我需要将数据格式更改为时间戳,否则NHibernate会截断毫秒数.
我找到了几个信息来源,最好的信息来源是: AutoMapping Info 1他在哪里更改列名和属性类型.问题是,根据这份文件,流畅的自动化有所改变.
现在我无法弄清楚如何让自动化"改变类型".我尝试了下面的代码,但我被卡住了.同样,我想要做的只是告诉automapper:
使用DateTime的时间戳可以防止在使用自动化时截断毫秒.
有人有个主意吗?代码到目前为止:
public class DateTimeToTimestamp : IClassConvention
{
public bool Accept(IClassMap target)
{
return target.GetType() == typeof(DateTime);
}
public void Apply(IClassMap target)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
好的,非常感谢答案......这对我来说足够舒适.如果我真的有3个需要这种精度的类,我可以处理三次写入.特别是因为所有其他属性的映射仍然完美,并且以下代码仅替换我想要的一个属性...非常好!
如果有人知道更通用的方法,请随意添加它,但是现在,我很高兴!
我案件的代码是:
public class DateTimeToTimestamp : IAutoMappingOverride<CustomTime>
{
public void Override(AutoMap<CustomTime> mapping)
{
mapping.Map(x => x.ScanDate).CustomTypeIs("timestamp");
}
}
Run Code Online (Sandbox Code Playgroud)
Dan*_* T. 11
要扩展Derek的答案,为了在更一般的层面上进行,您将使用自动化约定:
public class TimestampTypeConvention : IPropertyConvention, IPropertyConventionAcceptance
{
public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
{
criteria.Expect(x => x.Type == typeof (DateTime));
}
public void Apply(IPropertyInstance instance)
{
instance.CustomType<TimestampType>();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6266 次 |
| 最近记录: |