PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

NHibernate Postgresql DateTime alla conversione dell'ora

Capito!

Apparentemente il foglio di conversione che ho collegato to è sbagliato o non aggiornato. Si scopre che un oggetto System.TimeSpan è ciò che è necessario affinché Npgsql esegua una corretta conversione in un oggetto "time" Postgresql. Mi sembra strano che cerchino di convertire qualcosa che rappresenta una differenza tra due tempi in ciò che pensiamo come HH:mm:ss ma è così.

Invece di modificare il tipo della mia proprietà RunTime da System.DateTime a System.TimeSpan, ho invece creato un IUserType personalizzato e ho sovrascritto NullSafeSet in modo che assomigli a

public override void NullSafeSet(IDbCommand cmd, object value, int index)
{
    var obj = (DateTime)value;

    ((IDbDataParameter) cmd.Parameters[index]).Value = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second);
}