使用資料庫,為了效能的考量下,有時候使用預存程序。而在 EntityFramework Core 中,呼叫預存程序稍微有點麻煩,但其實也只是把呼叫預存程序的 SQL 語法填入而已。

以下連結為本篇文章的範例位置:

範例下載

以下是呼叫的方式,其實就是呼叫 FromSqlRaw:

public IQueryable<T> ExecStoreProcedure(string storeProcedureRawSql, object[] parameters)
{
    IQueryable<T> result = null;
    if (parameters == null)
    {
        result = _currentDbContext.Set<T>().FromSqlRaw(storeProcedureRawSql);
    }
    else
    {
        result = _currentDbContext.Set<T>().FromSqlRaw(storeProcedureRawSql, parameters);
    }
    return result;
}

使用方式:

public List<Customers> GetCustomersBySP()
{
    //exec [dbo].[CustOrderHist] @CustomerID = N'BOTTM'
    List<Customers> customers = null;
    customers = _customersRepository.ExecStoreProcedure("exec [dbo].[MyTest] @Num = {0};", new object[] { 5 }).ToList();

    return customers;
}