Jak mapować typ NHibernate na typ TIME SQL Server? Używam NH 3.2 i map-by-code.Typ daty NHibernate i SQL 2008
public class Schedule
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual TimeSpan Time { get; set; }
}
Oto moja klasa mapowanie
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));
}
}
Teraz, gdy tworzę bazę danych z tej kolumny "Time" ma typ BIGINT SQL zamiast czasu. Przeczytałem artykuł this i that, ale nie jest dla mnie jasne, jak zastosować jedno z tych rozwiązań.
=========== EDIT ====================
I i wprowadza nowy plan tak:
var newSchedule = new Schedule {
Name = "My Schedule",
Time = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0)
};
session.SaveOrUpdate(newSchedule);
kiedy te dane został wstawiony (około 7:27 PM) kolumny zawierał wartości czasu „700200000000”, który mógłby być kleszcze, ale najważniejsze było to, że kiedy zapytaliśmy DB dla tych wartości
var retrievedSchedules = session.QueryOver<Schedule>().List();
Właściwość Czas została poprawnie ustawiona na 19: 27. Orgin sojusznik Chciałbym, aby właściwość Time reprezentowała czas, w którym harmonogram powinien działać. Mimo że typ danych SQL Server dla tej kolumny został zdefiniowany jako BIGINT, a wartość jest reprezentowana jako (najprawdopodobniej) tyknięcia, po pobraniu została poprawnie przeniesiona do czasu, co jest tym, czego chciałem. To już nie jest pytanie, ale zamierzam to zostawić, z nadzieją, na korzyść kogoś innego.
Tak, działało dokładnie tak, jak zasugerowałeś. Byłem świadomy typu TimeAsTimeSpanType, ale nie mogłem dowiedzieć się, jak to określić w mojej klasie mapowania. Dzięki! – user981375