Как выполнить хранимую функцию, используя dapper и npgsql? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть следующая сохраненная функция

CREATE OR REPLACE FUNCTION public.servers_GetTop()
RETURNS SETOF servers AS
$$
BEGIN
    return query
        SELECT *
        FROM servers
        ORDER BY GroupId DESC
        LIMIT 5;
END;
$$
LANGUAGE 'plpgsql';

И следующий C # с использованием dapper

public async Task<IEnumerable<Models.ServerInfo>> GetTopServers()
        {
            using (var db = _connectionFactory.GetConnection())
            {
                var cmd = new CommandDefinition("servers_GetTop", CommandType.StoredProcedure);
                return await db.QueryAsync<Models.ServerInfo>(cmd);
            }
        }

Что приводит к ошибке:

Произошла одна или несколько ошибок. (42601: синтаксическая ошибка в или около "servers_GetTop")

Я использую Npgsql 4. Может кто-нибудь помочь мне понять, где находится синтаксическая ошибка и почему это происходит?

Если я запускаю хранимую функцию в оболочке SQL, она работает нормально. Кроме того, если я изменю код с использования сохраненной функции на запрос, проблем не возникнет:

var cmd = new CommandDefinition("SELECT * FROM servers");
...