Database 使用postgresql和EF时如何编写sql来获取数据?
我有下面的C和实体框架6.4代码来获取数据 postgresql函数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},'{
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();