EF Core,如何使用輸入和輸出參數調用存儲過程?

c# entity-framework-core stored-procedures

在EF Core中,使用dbContext ,如何使用輸入和輸出參數調用存儲過程?我知道基本的陀螺是:

Set<blah>.FromSql("storedProcName @p0 = {0}, @p1 = {1}", p0, p1);

但是,由於沒有實體,我只能選擇“blah”,它只是一個bool輸出......我怎麼得到所說的輸出?

編輯:這個問題沒有解決問題。

DAMN ......最終讓它工作了......你必須使用大括號語法並在最後一個參數上添加OUTPUT關鍵字。

SqlParameter paramOut = new SqlParameter("@p5", SqlDbType.Bit) { Direction = ParameterDirection.Output };

        this.Database.ExecuteSqlCommand("exec usp_xxx @p1={0}, @p2={1}, @p3={2}, @p4={3}, @p5={4}, @exist={5} OUTPUT",
            p1, p2, p3, p4, p5, paramOut);

熱門答案

您可以編寫一個實用程序方法,如:

private static int ExecuteSqlCount(string statement, SqlParameter[] paramsSql)
{
    using (Entities dbContext = new Entities())
    {
        var total = dbContext.Database.SqlQuery<int>(statement, paramsSql).First();
        return total;
        }
    }
}

假設存儲過程採用如圖所示的兩個參數並返回一個整數,它將被調用為:

var parameters = new List<SqlParameter>();
string statement = "exec uspPersonAdd @personName = @name, @activeFlag = @active";
parameters.Add(new SqlParameter("@name", person.PersonName));
parameters.Add(new SqlParameter("@active", person.Active));
int id = ExecuteSqlCount(statement, parameters.ToArray());


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow