Come si esegue il mapping del tipo NHibernate al tipo TIME di SQL Server? Sto usando NH 3.2 e mappa per codice.Tipo dati ora NHibernate e SQL 2008
public class Schedule
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual TimeSpan Time { get; set; }
}
Qui è la mia classe di mappatura
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));
}
}
Ora, quando creo database da questa colonna "Time" ha tipo BIGINT SQL invece di TEMPO. Ho letto l'articolo this e l'articolo that ma non mi è chiaro come applicare una di queste soluzioni.
=========== EDIT ====================
che ho creato e inserito nuovo orario in questo modo:
var newSchedule = new Schedule {
Name = "My Schedule",
Time = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0)
};
session.SaveOrUpdate(newSchedule);
quando questi dati è stato inserito (circa 07:27) il tempo di colonna contenuta valore '700.200.000.000', che potrebbe essere zecche, ma la cosa più importante era che quando ho chiesto DB per questi valori
var retrievedSchedules = session.QueryOver<Schedule>().List();
la proprietà Time è stata impostata correttamente su 19: 27.Origin volevo che la proprietà Time rappresentasse l'ora in cui Schedule dovrebbe funzionare. Anche se il tipo di dati di SQL Server per questa colonna è stato definito come BIGINT e il valore è rappresentato come tick (molto probabilmente), dopo il recupero è stato correttamente transitato in un tempo, che è quello che volevo. Questa non è più una domanda, ma lascerò questo, si spera, a beneficio di qualcun altro.
Sì, ha funzionato esattamente come lei ha suggerito. Ero a conoscenza del tipo TimeAsTimeSpanType ma non riuscivo a capire come specificarlo nella mia classe di mappatura. Grazie! – user981375