我正在使用 Fluent NHibernate 配置我的映射在读取数据时一切正常,但是当尝试插入或更新 Postgresql 类型为 Time 的记录时,我收到错误消息
"ERROR: 42804: column \"run_time\" is of type time with time zone but expression is of type timestamp without time zone"
看起来 NHibernate 可能对将 DateTime 转换为哪个 DbType 感到困惑,正如您从PostgreSQL 和 C# Datatypes中看到的那样,DateTime 映射到多个 DbType。
我还尝试从 IUserType 为该列指定自定义类型,但在 NullSafeSet 覆盖上我得到 NullReferenceError
public override void NullSafeSet(IDbCommand cmd, object value, int index)
{
var obj = (DateTime)value;
NHibernate.NHibernateUtil.Time.NullSafeSet(cmd, obj, index);
}
我可以提供某种类型的提示来告诉 NHibernate 将 DateTime 转换为 Postgresql“时间”类型吗?或者我可以通过 IUserType 实现这一点而我只是做错了什么?