如何在 dbcontext DB first .net core 中添加存储过程

how to add stored procedure in db context DB first .netcore

我需要将我的 Postgressql 存储过程添加到我的数据库上下文中,然后在我的使用 EF 核心的控制器中使用它,我认为在控制器中我应该使用:

 var x = db.dataInGlance.FromSqlRaw(@"SELECT * from wpv.avail_pro_failedbattry_error_powerconv('" + dtFrom + @"','" + dtTo + @"','" + regionalManager + @"','" + service_under + @"','" + supervisor + @"')
                            res (o_availability double precision, o_production double precision,o_numberofturbines integer, o_errors_disabled integer,o_failed_battery integer,o_power integer,o_crew_present text)");

在数据库上下文中:

  public DbSet<OverviewData> dataInGlance { get; set; }

但我想我还应该在 OnModelCreating modelbuilder 部分添加,我的架构名称是 WPV,这个 SP return 是 OverviewData class

  public class OverviewData
{
    public double Availability { get; set; }
    public string Production { get; set; }
    public int Number_Of_Turbines { get; set; }
    public Int64 ErrorDisabled { get; set; }
    public Int64 FailedBattery { get; set; }
    public Int64 PowerConv { get; set; }
    public string CrewPr { get; set; }
}

这个 class 没有密钥,因为它只是我的 SP 的 return 结果,但是当我 运行 代码时,我得到一个错误提示,我需要添加一个密钥,有什么帮助吗?

在 EF Core 3.0 中,您应该覆盖 DatabaseContext class 中的 OnModelCreating 方法以将 OverviewData 设置为无密钥实体。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
        .Entity<OverviewData>(od =>
        {
            od.HasNoKey();
        });
}