[英]EF Core, how to call stored procedure with input and output params?
在EF Core中,通過dbContext
,如何使用輸入和輸出參數調用存儲過程? 我知道基本的迷戀是:
Set<blah>.FromSql("storedProcName @p0 = {0}, @p1 = {1}", p0, p1);
但是,由於沒有實體,我該怎么稱呼“ blah”,這只是布爾輸出...而我該如何獲得所說的輸出?
編輯:那個問題不能解決問題。
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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.