我在資料庫中定義了一個存盤程序,我試圖從 C# 服務器呼叫它。
在我的存盤庫中,我有一個如下所示的通用方法:
private IList<T> ExecuteReturningProcedure<T>(string procedureName, params ValueTuple<string, object>[] parameters)
{
List<T> objList = null;
ExecuteCommand(procedureName, parameters, CommandType.StoredProcedure, (cmd) =>
{
using (var reader = cmd.ExecuteReader())
{
objList = MapToList<T>(reader).ToList();
}
});
return objList;
}
我為我的呼叫制定了如下所示的具體方法:
public List<dynamic> GetDataSubmissionEntries(Guid dataSubmissionId)
{
var parameters = Array.Empty<ValueTuple<string, object>>();
parameters.Append(new ValueTuple<string,object>("@dataSubmissionId", dataSubmissionId));
var entries = ExecuteReturningProcedure<dynamic>("[DataSubmission].[RetrieveDataSubmissionEntries]", parameters);
return entries.ToList();
}
問題是,當代碼執行時,我收到一條訊息例外:程序或函式“RetrieveDataSubmissionEntries”需要引數“@dataSubmissionId”,但未提供該引數。
我是否以錯誤的方式構造引數陣列?
uj5u.com熱心網友回復:
嘗試像這樣設定 SP 的引數:
SqlCommand cmd_Sp = new SqlCommand("YourSPname", conn);
cmd_Sp.CommandType = CommandType.StoredProcedure;
cmd_Sp.Parameters.Add("@dataSubmissionId", SqlDbType.VarChar).Value = dataSubmissionId.ToString();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/414351.html
標籤:
