2012-08-05 3 views
0

나는 다음과 같은 저장 프로 시저가 있습니다문제 : 매개 변수는 제공되지 기대한다

CREATEA PROCEDURE USP_U_Pricing 
( 
@ProductId int 
) 
AS 
BEGIN 
.... 
END 

I 설정과 같이있는 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(); 

여기에서 pricing은 SP 이름이며 매개 변수는 다음을 포함하는 배열입니다. pProduct 객체 만. 거기에, 나는 확인했다.

절차 또는 함수 'USP_U_Pricing'파라미터 '@ProductId'가 공급되지 않은 것으로 예상이 행이 실행되면

는, I는 다음의 예외를 얻는다.

나는 주위를 읽고 매개 변수를 설정하는 여러 가지 방법을 테스트했지만 결과는 없습니다. ProductId와 다른 @ProductId라는 두 매개 변수를 설정하면 매개 변수 이름이 고유해야한다는 오류가 발생합니다 ....

제발 나를 도와 줄 수 있습니까?

EDIT : parameters는 매개 변수 정보가 들어있는 배열입니다.

ExecuteStoredProcedureList<TEntity>(string commandText, params object[] parameters) 

매개 변수로 pProductId 전달 :

dbContext.ExecuteStoredProcedureList<PricingInfo>(
       "USP_U_Pricing", 
       pProductId); 

답변

3

당신이 함께 시도 할 수 나는이 서명 메소드를 호출하기 때문에이 채워집니다.

그러나 코드에서 SqlQuery에 전달 된 '매개 변수'인수의 생성을 볼 수 없습니다.

+0

편집을 참조하십시오. :) – JSBach

+1

Worked, thanks :) Btw, DbParameter 객체에 이름이 이미있는 경우 매개 변수를 명시 적으로 정의해야하는 이유는 무엇입니까? – JSBach