ObjectContext.ExecuteStoreCommand,如何在调用之间清除参数?

我使用不同的命令和不同的参数多次调用ObjectContext.ExecuteStoreCommand,尽管我对几个命令使用相同的参数列表(对象)。 我收到以下exception:

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

问题是您使用相同的参数两次。

试试这个

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