, если IUsertype является опцией
public class DateTimeUserType : ImmutableUserType
{
public override object NullSafeGet(IDataReader rs, string[] names, object owner)
{
var date = (DateTime)NHibernateUtil.DateTime.NullSafeGet(rs, names[0]);
var time = (DateTime)NHibernateUtil.DateTime.NullSafeGet(rs, names[0]);
return new DateTime(date.Year, ..., time.Hours, ...);
}
public override void NullSafeSet(IDbCommand cmd, object value, int index)
{
DateTime dt = (DateTime)(value ?? DateTime.MinValue);
NHibernateUtil.DateTime.NullSafeSet(cmd, dt.Date, index);
NHibernateUtil.DateTime.NullSafeSet(cmd, new DateTime(1899, 12, 30, dt.Hours, dt.Minutes, dt.Seconds), index + 1);
}
public override Type ReturnedType
{
get { return typeof(DateTime); }
}
public override SqlType[] SqlTypes
{
get { return new[] { SqlTypeFactory.DateTime, SqlTypeFactory.DateTime }; }
}
}
Map(x => x.Opened)
.Columns.Add("DateOpened", "TimeOpened")
.CustomType<DateTimeUserType>();