是的,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
方法調用存儲過程。