如何使用 .NET 6 在 EF Core 中创建存储过程

问题描述 投票:0回答:2

我在 .NET 6 中有一个类库项目,我在其中使用 EF Core。我能够使用代码优先方法创建表,但仍停留在如何创建存储过程上。我在 Google 上看过一些文章,但它显示使用旧的 EF 6,但不适用于 EF Core。

entity-framework-core ef-code-first .net-6.0
2个回答
2
投票

没有使用 EF Core 自动创建存储过程的方法,但手动创建存储过程的过程非常简单。

首先像平常一样创建一个新的迁移,它应该是空的。然后编辑迁移以手动创建过程。例如:

public partial class MyNewStoredProcMigration : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql("CREATE PROC DoStuff....");
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql("DROP PROC DoStuff");
    }
}

请注意,您可能希望将过程的字符串移动到资源文件中以保持整洁。


0
投票

现在可以在 EF Core 7.0 中使用 存储过程映射

modelBuilder.Entity<Person>()
    .InsertUsingStoredProcedure("People_Insert", builder =>
        {
            builder.HasParameter(a => a.Name);
            builder.HasResultColumn(a => a.Id);
        })
    .UpdateUsingStoredProcedure("People_Update", builder =>
        {
            builder.HasOriginalValueParameter(person => person.Id);
            builder.HasOriginalValueParameter(person => person.Name);
            builder.HasParameter(person => person.Name);
            builder.HasRowsAffectedResultColumn();
        })
    .DeleteUsingStoredProcedure("People_Delete", builder =>
        {
            builder.HasOriginalValueParameter(person => person.Id);
            builder.HasOriginalValueParameter(person => person.Name);
            builder.HasRowsAffectedResultColumn();
        });
© www.soinside.com 2019 - 2024. All rights reserved.