C# 如何从实体框架核心正确调用Postgres函数?
我有一个函数需要从Postgres调用,这是我目前所拥有的:C# 如何从实体框架核心正确调用Postgres函数?,c#,postgresql,entity-framework,asp.net-core,entity-framework-core,C#,Postgresql,Entity Framework,Asp.net Core,Entity Framework Core,我有一个函数需要从Postgres调用,这是我目前所拥有的: var s1 = new Npgsql.NpgsqlParameter("_date", NpgsqlDbType.Date) { Direction = System.Data.ParameterDirection.Input, Value = DateTime.Now.Date }; var command = await _context.AggregateBalances.FromSqlRaw($
var s1 = new Npgsql.NpgsqlParameter("_date", NpgsqlDbType.Date)
{
Direction = System.Data.ParameterDirection.Input,
Value = DateTime.Now.Date
};
var command = await _context.AggregateBalances.FromSqlRaw($"SELECT * from get_aggregate_balance(@s1)", s1).ToListAsync();
当我尝试此操作时,会出现以下异常:
这是pgAdmin的输出:
为了映射此结果,我创建了此模型/数据库集:
public class SPGetAggregateBalance
{
public int Id { get; set; }
public decimal Balance { get; set; }
}
public DbSet<SPGetAggregateBalance> AggregateBalances { get; set; }
公共类SPGetAggregateBalance
{
公共int Id{get;set;}
公共十进制余额{get;set;}
}
公共数据库集聚合平衡{get;set;}
为什么“s1”是一列?为什么它不存在?尝试使用
var s1=DateTime.Now.ToString("yyyy/MM/dd");
var command = await _context.SPGetAggregateBalances.FromSqlInterpolated($"SELECT * FROM get_aggregate_balance({s1})")
添加到您的EF上下文:
modelBuilder.Entity<SPGetAggregateBalance>(e =>
{
e.HasNoKey();
});
modelBuilder.Entity(e=>
{
e、 HasNoKey();
});
请尽可能发布文本而不是图像,例如异常堆栈跟踪。看起来完整的表值支持将在EF Core 5中完成,包括返回IQueryable的db函数。如