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
相关产品推荐
相关产品推荐

