PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

NHibernate Postgresql DateTime para conversão de hora


Descobri!

Aparentemente, a planilha de conversão eu vinculada to está errado ou desatualizado. Acontece que um objeto System.TimeSpan é o que é necessário para o Npgsql fazer uma conversão adequada para um objeto "time" do Postgresql. Parece estranho para mim que eles tentariam converter algo que representa uma diferença entre dois tempos no que pensamos como HH:mm:ss, mas é assim que é.

Em vez de alterar o tipo da minha propriedade RunTime de System.DateTime para System.TimeSpan, criei um IUserType personalizado e substituí NullSafeSet para parecer
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);
}