При вызове функции DB в Postgres тип для String
изменяется на text
, а DateTime
- timestamp
. Есть ли способ гарантировать, что этого не произойдет?Dapper: Строка передается как текст при вызове функций postgres.
Установка: функция DB:
foo(v_from character varying, v_to character varying, v_date date)
Щеголеватый код:
public static decimal GetValue(DateTime vdate, string cur) {
string sql = @"SELECT _public.foo(@vFrom, @vTo, @vDate)";
var data = connection.QueryFirstOrDefault<decimal>(
sql,
new
{
vFrom = cur,
vTo = cur,
vDate = valdate,
}
);
}
Я получаю следующее сообщение об ошибке:
Npgsql.PostgresException : 42883: Function _public.foo(text, text, timestamp without time zone) does not exist
Как-то строка преобразуется в текст вместо символа VARCHAR. Аналогичная история для DateTime в timestamp.
Пробовал вариант с DynamicParameters.Add(), но все тот же результат.
пытаются неявное приведение: 'ВЫБРАТЬ _public.foo (@vFrom :: характер изменения, @vTo :: характер изменения, @vDate :: даты)' –