Как выполнить функцию postgres, используя dapper - PullRequest
0 голосов
/ 20 июня 2019

Я получаю сообщение об ошибке при попытке вызвать функцию postgre с помощью dapper.Где я сделал не так?Я буду рад, если вы сможете мне помочь.

Сообщение об ошибке:

 availability_list(facilityId => integer, startDate => timestamp without time zone, endDate => timestamp without time zone) does not exist"

Вызов функции postgre с помощью Dapper:

var func = "public.availability_list";

var result = db.Query<ReportResponse>(
            sql: func,
            param: new { facilityId = request.FacilityId, startDate = 
            DateTime.Now, endDate = DateTime.Now },
            commandType: CommandType.StoredProcedure, 
            commandTimeout: 900) as List<ReportResponse>;

Моя функция Postgre:

CREATE FUNCTION Availability_List(facilityId int, startDate date, endDate date)
RETURNS report_type[] 
AS 
$$

DECLARE
result_record report_type[];

BEGIN

result_record := array(  
SELECT...
);

RETURN result_record;

 END $$ LANGUAGE plpgsql;

1 Ответ

1 голос
/ 20 июня 2019

Я ожидаю, что вам нужно указать параметры, схему функции и результат должен совпадать.Вероятно, сработает следующее, и после этого вы сможете заменить тип возвращаемого значения, чтобы увидеть, правильно ли он отображается.

var result = _connection.Query<dynamic>(
    "SELECT dbo.Availability_List(@facilityId, @startDate, @endDate)", 
    new { 
        facilityId = request.FacilityId, 
        startDate = DateTime.Now, 
        endDate = DateTime.Now 
    },
    commandType: CommandType.Text,
    commandTimeout: 900);
...