Database 使用postgresql和EF时如何编写sql来获取数据?

Database 使用postgresql和EF时如何编写sql来获取数据?,database,postgresql,entity-framework,Database,Postgresql,Entity Framework,我有下面的C和实体框架6.4代码来获取数据 postgresql函数 return Database.SqlQuery<TEntity>(sql, parameters).ToArrayAsync(); 但是失败了,有人知道吗 我也尝试 var sql = "select * from GetLogs(TO_TIMESTAMP({0},'YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP({1},'YYYY-MM-DD HH24:MI:SS'),{2},'{

我有下面的C和实体框架6.4代码来获取数据

postgresql函数

return Database.SqlQuery<TEntity>(sql, parameters).ToArrayAsync();
但是失败了,有人知道吗

我也尝试

var sql = "select * from GetLogs(TO_TIMESTAMP({0},'YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP({1},'YYYY-MM-DD HH24:MI:SS'),{2},'{3}','{4}',{5},'{6}','{7}',{8},{9},{10})";
            var from = request.From.ToString("yyyy-MM-dd HH:mm:ss");
            var to = request.To.ToString("yyyy-MM-dd HH:mm:ss");
            return Database.SqlQuery<AdminLogMasterModel>(sql, 
                from,
                to,
                request.HttpStatusCode,
                request.ServerName,
                request.Page,
                request.TrackingId,
                request.Content,
                request.SortBy,
                request.OrderBy == SortOrder.Ascending ? 0 : 1,
                request.Page,
                request.Rows).ToArrayAsync();

这没有错误,但没有日期返回。似乎postgresql没有在EF中传递参数。

我尝试了以下代码可以工作

        var sql = "select * from GetLogs(TO_TIMESTAMP(@p0,'YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP(@p1,'YYYY-MM-DD HH24:MI:SS'),@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10)";
        var para = new NpgsqlParameter[]
            {
                new NpgsqlParameter("@p0", request.From.ToString("yyyy-MM-dd HH:mm:ss")),
                new NpgsqlParameter("@p1", request.To.ToString("yyyy-MM-dd HH:mm:ss")),
                new NpgsqlParameter("@p2", CreateRequestValueifNull(request.HttpStatusCode)),
                new NpgsqlParameter("@p3", CreateRequestValueifNull(request.ServerName)),
                new NpgsqlParameter("@p4", CreateRequestValueifNull(request.Path)),
                new NpgsqlParameter("@p5", CreateRequestValueifNull(request.TrackingId)),
                new NpgsqlParameter("@p6", CreateRequestValueifNull(request.Content)),
                new NpgsqlParameter("@p7", request.SortBy),
                new NpgsqlParameter("@p8", request.OrderBy == SortOrder.Ascending ? 0 : 1),
                new NpgsqlParameter("@p9", request.Page),
                new NpgsqlParameter("@p10", request.Rows),
            };
        return Database.SqlQuery<LogModel>(sql, para).ToArrayAsync();

这回答了你的问题吗?
        var sql = "select * from GetLogs(TO_TIMESTAMP(@p0,'YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP(@p1,'YYYY-MM-DD HH24:MI:SS'),@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10)";
        var para = new NpgsqlParameter[]
            {
                new NpgsqlParameter("@p0", request.From.ToString("yyyy-MM-dd HH:mm:ss")),
                new NpgsqlParameter("@p1", request.To.ToString("yyyy-MM-dd HH:mm:ss")),
                new NpgsqlParameter("@p2", CreateRequestValueifNull(request.HttpStatusCode)),
                new NpgsqlParameter("@p3", CreateRequestValueifNull(request.ServerName)),
                new NpgsqlParameter("@p4", CreateRequestValueifNull(request.Path)),
                new NpgsqlParameter("@p5", CreateRequestValueifNull(request.TrackingId)),
                new NpgsqlParameter("@p6", CreateRequestValueifNull(request.Content)),
                new NpgsqlParameter("@p7", request.SortBy),
                new NpgsqlParameter("@p8", request.OrderBy == SortOrder.Ascending ? 0 : 1),
                new NpgsqlParameter("@p9", request.Page),
                new NpgsqlParameter("@p10", request.Rows),
            };
        return Database.SqlQuery<LogModel>(sql, para).ToArrayAsync();