Как мне сопоставить тип NHibernate с типом TIME SQL Server? Я использую NH 3.2 и карту за кодом.
public class Schedule
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual TimeSpan Time { get; set; }
}
Вот мой класс картографии
public class ScheduleMapping : ClassMapping<Schedule>
{
public ScheduleMapping()
{
Id(x => x.Id, x => x.Generator(Generators.Native));
Property(x => x.Name, x => x.NotNullable(true));
Property(x => x.Time, x => x.NotNullable(true));
}
}
Теперь, когда я создаю базу данных из этого столбца, «Время» имеет тип BIGINT SQL вместо ВРЕМЕНИ. Я прочитал эту и эту статью, но мне не ясно, как применить любое из этих решений.
=========== РЕДАКТИРОВАТЬ ====================
Я создал и вставил новое расписание следующим образом:
var newSchedule = new Schedule {
Name = "My Schedule",
Time = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0)
};
session.SaveOrUpdate(newSchedule);
Когда эти данные были вставлены (около 7:27 вечера), столбец Time содержал значение «700200000000», которое могло быть тиками, но самое важное, что когда я запрашивал DB для этих значений
var retrievedSchedules = session.QueryOver<Schedule>().List();
свойство Time было правильно установлено на 19: 27. Первоначально я хотел, чтобы свойство Time представляло время, в которое должно выполняться расписание. Несмотря на то, что тип данных SQL Server для этого столбца был определен как BIGINT, а значение представлено в виде (наиболее вероятных) отметок, после извлечения оно было правильно переведено во время, что я и хотел. Это больше не вопрос, но я собираюсь оставить это, надеюсь, для чьей-либо выгоды.