Я немного углубился в автоматизацию с помощью свободного интерфейса NHibernate. Очень хорошая вещь, но я столкнулся с небольшой проблемой с DateTimes. Мне нужно изменить формат данных на метку времени, иначе NHibernate усекает миллисекунды.
Я нашел несколько источников информации, лучший из которых был:
AutoMapping Info 1 , где он меняет имя столбца и тип свойства. Проблема в том, что произошли изменения в плавных автоматических сопоставлениях, согласно этому документу .
Теперь я не могу понять, как заставить autopping "изменить тип". Я попробовал следующий код, но я застрял. Опять же, я хочу просто сказать автопроизводителю:
Используйте метки времени для 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");
}
}