Я использую Fluent NHibernate для настройки своих сопоставлений, все работает при чтении данных, но при попытке вставить или обновить записи, имеющие тип времени Postgresql, я получаю сообщение об ошибке
"ERROR: 42804: column \"run_time\" is of type time with time zone but expression is of type timestamp without time zone"
Похоже, что NHibernate может быть смущен тем, какой DbType преобразовать DateTime в, как вы можете видеть из PostgreSQL и C # Типы данных , что существует несколько типов DbType, с которыми DateTime сопоставляется.
Iтакже пытался указать пользовательский тип для этого столбца из 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, и я просто что-то не так делаю?