Я углубляюсь (немного) в автоматизацию с помощью свободного интерфейса 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");
}
}