2011-02-11 4 views
3

여러 명령에 대해 동일한 매개 변수 목록 (개체)을 사용하지만 다른 명령과 다른 매개 변수로 ObjectContext.ExecuteStoreCommand를 여러 번 호출합니다.ObjectContext.ExecuteStoreCommand, 호출간에 매개 변수를 지우는 방법은 무엇입니까?

System.ArgumentException: The SqlParameter is already contained by another SqlParameterCollection.

내가 똑바로 ADO.NET과 함께 할 것으로 호출 사이에 매개 변수를 취소 할 수있는 방법이 있나요 : 나는 다음과 같은 예외가 무엇입니까? 코드 샘플 업데이트

:

string sqlDeleteWebUserGreen = "delete WebUserGreen where WebUserId = @WebUserId"; 
    string sqlDeleteWebUserBlue = "delete WebUserBlue where WebUserId = @WebUserId"; 

    var argsDeleteWebUserXref = new DbParameter[] { 
     new SqlParameter { ParameterName = "WebUserId", Value = user.WebUserId } 

    rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserGreen, argsDeleteWebUserXref); 
    rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, argsDeleteWebUserXref); 

UPDATE는

기본적으로 나는이 일을 더 나은 방법을 찾을 수없는 나는, 그래서 아래의 대답을 받아들이는 끝났다. 유일한 차이점은 매개 변수를 별도의 메서드에 넣기 만하면 호출이 비슷해집니다. base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, MethodThatWillGiveMeTheParameterArray());

+0

당신은 당신의 코드를 게시 할 수 시도? 당신이 매번 사용 후 폐기해야하는 물체를 재사용하는 것처럼 들립니다. –

+0

@Shiraz Bhaiji, 예외를 발생시키는 영역을 업데이트했습니다. 실제로 나는 무엇이든 처리하고 싶지 않습니다.이 모든 것은 10 개의 호출을 호출하는 트랜잭션의 일부입니다 .ExecuteStoreCommand() – e36M3

답변

2

동일한 매개 변수를 두 번 사용하는 것이 문제입니다.

var argsDeleteWebUserXref1 = new DbParameter[] {   new SqlParameter { ParameterName = "WebUserId", Value = user.WebUserId } 

var argsDeleteWebUserXref2 = new DbParameter[] {   new SqlParameter { ParameterName = "WebUserId", Value = user.WebUserId } 

rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserGreen, argsDeleteWebUserXref1);  
rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, argsDeleteWebUserXref2); 
+0

나는 곧바로 ADO.NET에서 Parameters.Clear()를 호출한다는 것을 이해합니다. 호출 간에는 차이가 있지만 Entity Framework를 통해 공개 된 이러한 기능은 보지 못합니다. 똑같은 정확한 매개 변수를 포함하는 두 개의 서로 다른 객체를 만드는 것만으로도이 문제에 대한 최후의 해결책이 될 것 같지 않습니까? – e36M3

+0

어떤 식 으로든 저장 프로 시저에 매개 변수를 연결 한 것으로 보이므로 동시에 두 프로 시저에 매개 변수를 사용할 수 없습니다. –

관련 문제