You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core 7中调用已映射存储过程的C#语法是什么?

EF Core 7映射存储过程后的调用方式

自动触发(推荐方式)

你配置的InsertUsingStoredProcedure是用来替换EF Core默认的实体插入逻辑的,当你通过Add/AddRange添加Person实体后,调用SaveChanges()或SaveChangesAsync()时,EF会自动调用你指定的PeopleInsert存储过程,无需手动编写存储过程调用代码:

var newPerson = new Person { FirstName = "John", LastName = "Doe" };
context.People.Add(newPerson);
// 此时EF会自动调用PeopleInsert存储过程完成插入
await context.SaveChangesAsync();

手动显式调用

如果需要直接显式调用该存储过程,EF Core 7没有提供基于映射的强类型调用API,但可以通过参数化的方式优雅调用:

var firstNameParam = new SqlParameter("@FirstName", "Jane");
var lastNameParam = new SqlParameter("@LastName", "Smith");
await context.Database.ExecuteSqlAsync(
    "EXEC PeopleInsert @FirstName, @LastName",
    firstNameParam, lastNameParam
);

封装强类型扩展方法(更优雅的手动调用)

如果想要更简洁的强类型调用体验,可以自己封装一个DbContext扩展方法:

public static class PersonDbContextExtensions
{
    public static async Task InsertPersonViaStoredProcAsync(
        this YourDbContext context, 
        string firstName, 
        string lastName)
    {
        await context.Database.ExecuteSqlAsync(
            "EXEC PeopleInsert @FirstName, @LastName",
            new SqlParameter("@FirstName", firstName),
            new SqlParameter("@LastName", lastName)
        );
    }
}

调用时只需:

await context.InsertPersonViaStoredProcAsync("Alice", "Brown");

内容的提问来源于stack exchange,提问作者rah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:50:16