次のストアド プロシージャがあります。
CREATEA PROCEDURE USP_U_Pricing
(
@ProductId int
)
AS
BEGIN
....
END
次のように DbParameter を設定します。
var pProductId = dataProvider.GetParameter(); //This returns a DbParameter
pProductId.ParameterName = "@ProductId";
pProductId.Value = productId;
pProductId.DbType = DbType.Int32;
そして、次のようにプロシージャを呼び出します。
this.Database.SqlQuery<TEntity>("USP_U_Pricing", parameters).ToList();
価格設定は SP 名であり、パラメーターは pProduct オブジェクトのみを含む配列です。あります、確認しました。
この行が実行されると、次の例外が発生します。
プロシージャまたは関数 'USP_U_Pricing' には、指定されていないパラメーター '@ProductId' が必要です。
パラメータを設定するさまざまな方法を読んでテストしてきましたが、結果はありません。ProductId という名前のパラメーターと @ProductId という名前のパラメーターの 2 つのパラメーターを設定すると、パラメーター名は一意でなければならないというエラーが表示されます。
助けてください。
編集: parameters は、パラメーター情報を含む配列です。このシグネチャを使用してメソッドを呼び出すため、データが取り込まれます。
ExecuteStoredProcedureList<TEntity>(string commandText, params object[] parameters)
パラメータとして pProductId を渡します。
dbContext.ExecuteStoredProcedureList<PricingInfo>(
"USP_U_Pricing",
pProductId);