是的,Entity Framework Core 支持存储过程。您可以使用FromSqlRaw
或FromSqlInterpolated
方法来调用存储过程。这里有一个简单的示例:
CREATE PROCEDURE GetEmployees
AS
BEGIN
SELECT * FROM Employees
END;
public DbSet<Employee> Employees { get; set; }
FromSqlRaw
或FromSqlInterpolated
方法调用存储过程:using var context = new MyDbContext();
var employees = context.Employees.FromSqlRaw("EXEC GetEmployees").ToList();
请注意,FromSqlRaw
和FromSqlInterpolated
方法仅适用于查询操作。对于非查询操作(如插入、更新或删除),您需要使用ExecuteSqlRaw
或ExecuteSqlInterpolated
方法。
此外,如果您使用的是EF Core 5.0或更高版本,您还可以使用FromSqlRaw
或FromSqlInterpolated
方法将存储过程的结果映射到一个没有与数据库表直接关联的实体类型。这需要在模型构建器中配置实体类型。例如:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Employee>().HasNoKey();
}
然后,您可以像之前一样使用FromSqlRaw
或FromSqlInterpolated
方法调用存储过程。