如何使用dapper和npgsql执行存储的函数?

时间:2018-06-27 22:45:41

标签: c# postgresql dapper npgsql

我具有以下存储功能

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';

以及以下使用dapper的C#

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”处或附近的语法错误)

我正在使用Npgsql4。有人可以帮助我了解语法错误在哪里以及为什么会发生这种情况吗?

如果我在SQL Shell中运行存储的函数,它将正常工作。另外,如果我将代码从使用存储的函数更改为查询,也没有任何问题:

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

0 个答案:

没有答案