0

次のストアド プロシージャがあります。

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);
4

1 に答える 1

3

これで試していただけませんか。

this.Database.SqlQuery<TEntity>("EXEC USP_U_Pricing @ProductId", pProductID); 

ちなみに、あなたのコードでは、SqlQueryに渡された'parameters'引数の作成を確認できません。

于 2012-08-05T22:45:41.300 に答える