如何在 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();
});
}
我需要将我的 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();
});
}