如何从 EF Core 代码优先方法创建存储过程?

How to create a stored procedure from EF Core code first approach?

在 EF Core 中,我们可以使用实体 classes 添加表。存储过程是有用的组件之一。那么有什么方法可以从 DbContext class 创建存储过程(就像使用 Dbset 我们可以创建表一样)?

已经经历了一些 links,其中在 EF6 中有一种推送存储过程的方法,尽管它似乎是一种解决方法。

引用Link-->EF 6 code-first with custom stored procedure

虽然我按照上面的 link,这意味着对于 EF6,迁移文件是从 DbMigration 继承的,在 EF Core 中它是 Migration 基础 class .我没有找到任何方法,而且可能没有找到太多相关的文章。

有什么帮助或建议吗?

一般情况下,我们在你migrationclass的Up方法中使用MigrationBuilder.Sql方法创建存储过程,如下:

public partial class SPCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
    //...

    var sp = @"CREATE PROCEDURE [dbo].[GetStudents]
        AS
        BEGIN
            select * from Students
        END";

    migrationBuilder.Sql(sp);
}

protected override void Down(MigrationBuilder migrationBuilder)
{
    //...
}
}

要执行一个存储过程,你可以调用FromSqlRaw方法,像这样:

var students= _dbcontext.Students.FromSqlRaw("EXECUTE GetStudents").ToList();